- 浏览: 116770 次
- 性别:
- 来自: 北京
博客专栏
-
httclient实践与源...
浏览量:0
文章分类
- 全部博客 (141)
- java设计模式 (6)
- oracle (2)
- spring (0)
- java多线程 (12)
- Effective Java 读书笔记 (5)
- mysql (11)
- 书签 (2)
- Web前端 (2)
- python (6)
- 技术博客 (6)
- 搬家 (2)
- android (1)
- java (18)
- 架构 (6)
- linux (14)
- memcached (3)
- 测试 (1)
- 网络 (1)
- 高性能WEB (2)
- http (1)
- java io (2)
- jdbc (1)
- php (5)
- css (2)
- jenkins (1)
- jfinal (1)
- maven (3)
- 算法 (3)
- 代码规范 (1)
- shell (3)
- 安全 (1)
- fastJson源码剖析 (0)
- jdk源码分析 (0)
- git (1)
- 分布式知识点 (0)
- 分布式 (1)
- tcp (1)
- cpu (2)
- 软技能 (1)
- 编译原理 (1)
- 操作系统 (1)
- java虚拟机 (1)
- 处理器 (1)
- tbschedule (1)
- 需要看的源码 (1)
- idea (1)
- zookeeper (1)
- httpclient (1)
最新评论
-
lliiqiang:
功能是关键,但是因为人的性能有限,所以性能也有可能是功能,
关于有效的性能调优的一些建议 -
huangyunbin:
呵呵,感觉和缓存很相似,已经存在的直接缓存里取,缓存没有的话加 ...
享元模式
关于有效的性能调优的一些建议
只有采用有效的性能调优手段,才能使得性能调优达到事倍功半的效果。近日,
个人博客 Liguanglei 中发布了一篇关于有效性能调优建议的文章,该篇文章是作
者阅读《性能调优:综合指南》的读书笔记。作者从影响系统性能的算法、算法
运行环境与所需资源以及算法和环境资源的交互等因素讲述了性能调优的一些
建议。新手能够直接根据这些建议进行系统调优,老手也可以拿来当作调优的参
考。现对这些建议进行一个全面的梳理,以供读者参考和学习,具体内容如下。
1.算法本身的优化
算法优化是性能局部优化的首选, 并常采用各种性能监控软件来度量 CPU 时
间、内存占用率、函数调用次数以问题定位,然后实施各种调优方法,如优化循
环、利用空间换时间、采用合适的数据结构等。但是算法本身的优化只能够帮助
大家消除一些明显的编程细节引起的瓶颈,尤其单单通过算法优化的手段还不能
完全解决性能问题,且具有非常大的难度。
2.优化运行环境与资源
运行环境与资源包括各种软硬件平台,硬件环境包括 CPU、内存、磁盘以及网
络等。最简单且最省事的调优方法是优化硬件资源,使用快速计算资源代替慢速
计算资源,提升资源的计算能力。
优化硬件资源的方式包括:
更快的 CPU;
更快的本地 IO 设备,比如内存代替硬盘, SD 代替机械硬盘;
加内存减少分页;
快的网络 IO 设备,比如使用光纤及专线增加网络带宽,使用万兆千兆网卡
代替千兆百兆网卡。推荐文章 | Article
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com。
快速计算资源代替慢速计算资源,比如快速存储代替慢速存储(属于同类型资
源);本地计算换网络传输的优化最好采用压缩传输内容的优化手段(属于不同
类型的资源),该方式尽管增加了 CPU 的压缩/解压时间,但减少了大量网络传
输时间
软件环境包括操作系统、数据库、中间件等。软件环境调优的成本要相对较高, 并
且工作量很大,如从 Windows 平台迁移到 Linux 平台、从数据库 A 切换到数据
库 B、从 EJB 切换到 Spring 等。这类调优见效快,但受制于预算和硬件本身的
限制。由于资源始终是有限的,随着资源的消耗,仍然存在性能瓶颈。
3.优化算法和资源间的交互
当前各种调优实践最集中的领域是优化算法和资源间的交互,如减少单台服务器
(或单位计算资源)的处理量、充分利用系统资源、减少不必要的计算、减少不必
要的 IO 等。
具体内容如下。
减少单台服务器(或单位计算资源)的处理量
当在单台机器处理能力已达上限的情况,就需要把压力分散到多台机器上, 从而使每台机器都能获得可接受的延迟或吞吐量。总的优化原则是分而治
之,具体维度包括业务、组件边界、访问频率或对系统资源的消耗程度、瓶
颈资源等。
具体内容如下。
1. 业务:把大应用按业务分成独立的互相合作的系统,如高层的采用 SOA
方式,低层的采用数据库分库方式。
2. 组件边界: Web 服务器、应用服务器、数据库服务器、文件服务器。
3. 对系统资源的消耗程度:采用读写分离的方式。
4. 瓶颈资源: 对数据库进行分表、分片。
一旦按上述维度处理好了,大家还可以在所有维度上应用负载均衡,把访问量分
散到不同服务器。
充分利用系统资源推荐文章 | Article
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com。
采用多进程、多线程、异步操作以及负载均衡等手段,其中负载均衡主要做到
了防止某台服务器过满和防止某台服务器过闲。
减少不必要的计算次数
缓存计算结果,尤其是服务端缓存,以减少不必要的计算。
减少不必要的 IO 次数
网络 IO 次数:客户端缓存、CDN 缓存、合并资源以减少请求次数。
磁盘 IO 次数:缓存常用数据,如利用 Redis、Memcached 进行缓存。
最后,作者总结指出缓存是减少不必要计算和 IO 的重要手段,缓存的设计主要
是根据资源变化频率对资源进行分类,比如动静分离等;其前提是恰当的状态管
理、分离无状态的逻辑和有状态的逻辑,但会付出对一致性的一定妥协和运维的
复杂为代价。缓存的适用场景包括热点不均衡、有效时间不太短、一致性牺牲程
度可接受。作者还指出以上所有优化手段可以组合使用,有冲突时再做权衡。
作者还推荐了一些参阅文章:有关压力测试、负载测试的
《重述:性能、容量、
负载以及压力测试》http://blog.csdn.net/chelsea/article/details/5767530和
《性能调优技术的几个角度》http://blog.csdn.net/chelsea/article/details/5767530。此外,有兴趣的读者还可
以参阅酷壳陈皓发表的一篇题为
《性能调优攻略》http://coolshell.cn/articles/7490.html的文章。
只有采用有效的性能调优手段,才能使得性能调优达到事倍功半的效果。近日,
个人博客 Liguanglei 中发布了一篇关于有效性能调优建议的文章,该篇文章是作
者阅读《性能调优:综合指南》的读书笔记。作者从影响系统性能的算法、算法
运行环境与所需资源以及算法和环境资源的交互等因素讲述了性能调优的一些
建议。新手能够直接根据这些建议进行系统调优,老手也可以拿来当作调优的参
考。现对这些建议进行一个全面的梳理,以供读者参考和学习,具体内容如下。
1.算法本身的优化
算法优化是性能局部优化的首选, 并常采用各种性能监控软件来度量 CPU 时
间、内存占用率、函数调用次数以问题定位,然后实施各种调优方法,如优化循
环、利用空间换时间、采用合适的数据结构等。但是算法本身的优化只能够帮助
大家消除一些明显的编程细节引起的瓶颈,尤其单单通过算法优化的手段还不能
完全解决性能问题,且具有非常大的难度。
2.优化运行环境与资源
运行环境与资源包括各种软硬件平台,硬件环境包括 CPU、内存、磁盘以及网
络等。最简单且最省事的调优方法是优化硬件资源,使用快速计算资源代替慢速
计算资源,提升资源的计算能力。
优化硬件资源的方式包括:
更快的 CPU;
更快的本地 IO 设备,比如内存代替硬盘, SD 代替机械硬盘;
加内存减少分页;
快的网络 IO 设备,比如使用光纤及专线增加网络带宽,使用万兆千兆网卡
代替千兆百兆网卡。推荐文章 | Article
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com。
快速计算资源代替慢速计算资源,比如快速存储代替慢速存储(属于同类型资
源);本地计算换网络传输的优化最好采用压缩传输内容的优化手段(属于不同
类型的资源),该方式尽管增加了 CPU 的压缩/解压时间,但减少了大量网络传
输时间
软件环境包括操作系统、数据库、中间件等。软件环境调优的成本要相对较高, 并
且工作量很大,如从 Windows 平台迁移到 Linux 平台、从数据库 A 切换到数据
库 B、从 EJB 切换到 Spring 等。这类调优见效快,但受制于预算和硬件本身的
限制。由于资源始终是有限的,随着资源的消耗,仍然存在性能瓶颈。
3.优化算法和资源间的交互
当前各种调优实践最集中的领域是优化算法和资源间的交互,如减少单台服务器
(或单位计算资源)的处理量、充分利用系统资源、减少不必要的计算、减少不必
要的 IO 等。
具体内容如下。
减少单台服务器(或单位计算资源)的处理量
当在单台机器处理能力已达上限的情况,就需要把压力分散到多台机器上, 从而使每台机器都能获得可接受的延迟或吞吐量。总的优化原则是分而治
之,具体维度包括业务、组件边界、访问频率或对系统资源的消耗程度、瓶
颈资源等。
具体内容如下。
1. 业务:把大应用按业务分成独立的互相合作的系统,如高层的采用 SOA
方式,低层的采用数据库分库方式。
2. 组件边界: Web 服务器、应用服务器、数据库服务器、文件服务器。
3. 对系统资源的消耗程度:采用读写分离的方式。
4. 瓶颈资源: 对数据库进行分表、分片。
一旦按上述维度处理好了,大家还可以在所有维度上应用负载均衡,把访问量分
散到不同服务器。
充分利用系统资源推荐文章 | Article
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com。
采用多进程、多线程、异步操作以及负载均衡等手段,其中负载均衡主要做到
了防止某台服务器过满和防止某台服务器过闲。
减少不必要的计算次数
缓存计算结果,尤其是服务端缓存,以减少不必要的计算。
减少不必要的 IO 次数
网络 IO 次数:客户端缓存、CDN 缓存、合并资源以减少请求次数。
磁盘 IO 次数:缓存常用数据,如利用 Redis、Memcached 进行缓存。
最后,作者总结指出缓存是减少不必要计算和 IO 的重要手段,缓存的设计主要
是根据资源变化频率对资源进行分类,比如动静分离等;其前提是恰当的状态管
理、分离无状态的逻辑和有状态的逻辑,但会付出对一致性的一定妥协和运维的
复杂为代价。缓存的适用场景包括热点不均衡、有效时间不太短、一致性牺牲程
度可接受。作者还指出以上所有优化手段可以组合使用,有冲突时再做权衡。
作者还推荐了一些参阅文章:有关压力测试、负载测试的
《重述:性能、容量、
负载以及压力测试》http://blog.csdn.net/chelsea/article/details/5767530和
《性能调优技术的几个角度》http://blog.csdn.net/chelsea/article/details/5767530。此外,有兴趣的读者还可
以参阅酷壳陈皓发表的一篇题为
《性能调优攻略》http://coolshell.cn/articles/7490.html的文章。
发表评论
-
java Unsafe类
2018-03-20 20:55 398http://ifeve.com/sun-misc-unsaf ... -
java 之DelayQueue实际运用示例
2016-06-15 17:09 489http://www.cnblogs.com/sunzhenc ... -
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
2015-07-03 19:11 667window下在同一台机器上安装多个版本jdk,修改环境变量不 ... -
java实现base64
2015-04-29 15:30 505BASE64和其他相似的编码算法通常用于转换二进制数据为文本数 ... -
最全的静态网站生成器(开源项目)
2015-04-26 00:53 502最全的静态网站生成器(开源项目) http://www.ite ... -
java 代码时间和内存测试
2015-04-18 22:26 615// 测试用了多少内存 import java.util ... -
系统打印日志的10条建议(翻译)
2015-04-14 14:33 462http://uptoknow.iteye.com/blog/ ... -
Java编程最差实践
2015-04-14 14:32 377http://macrochen.iteye.com/blog ... -
几行代码写RPC
2015-04-13 22:55 442转自梁飞博客 package com.alibaba.stud ... -
58龙哥教你“如何做系统性能优化”(纯干货)
2015-04-12 21:58 580如何做系统性能优化 性能优化的目标是什么?不外乎两个: 时间 ... -
java 关于for和foreach,兼顾效率与安全
2014-12-05 14:46 17355关于for和foreach,兼顾效率与安全 对于数组的访问,是 ... -
java 关于for循环
2014-12-05 14:41 529关于使用for循环 有人喜欢使用for作类似while的循环: ... -
会话COOKIE? 持久COOKIE?
2014-11-07 00:15 555关于COOKIE和SESSION的关系,一直没搞清楚。网上一搜 ... -
内存cookie与持久cookie
2014-11-05 22:27 553cookie分两种 :会话cookie(session coo ... -
Java字符串底层理解
2014-09-11 15:11 7081. 栈(stack)与堆(heap)都是 ... -
java 字符串相加
2014-09-10 14:01 1489字符串相加。string + (原作者: 火龙果) 为了加 ... -
java虚拟机垃圾回收深入理解
2013-03-18 17:52 888JAVA学习之4 引用与JVM 1.java内存管理分为内存分 ...
相关推荐
Oracle性能调优 一、概述, 二、警告,跟踪文件,事件 三、监控工具和动态性能视图 四、优化SQL语句 五、优化共享内存 六、优化数据缓存 七、优化重做日志缓存 八、优化数据库结构和IO 九、有效使用数据块
建立索引和编写高效的sql语句能有效避免低性能操作;通过锁的调优解决并发控制方面的性能问题。数据库调优技术可以在不同的数据库系统中使用,它不必纠缠于复杂的公式和规则,然而它需要对程序的应用、数据库管理系统...
性能调优曾经是“艺术性”多于“科学性”,但是通过结合抽象分析和尝试并产生错误,基于等待的调优方法已经证明能够使该过程更具科学性和更有效率。
一般来说:若CUR接近MAX,而PUT大于MAX很多,则表明MAX需要增大,HIT/ACCESS为...重新调整缓存的最大值以后,观测指标都会跟随变化,调整是否有效,主要观察缓存命中率是否在提升,PUT则下降。 具体详情请参与本资料。
AIX下的系统调优,写的很详细. 性能调整的核心围绕着资源的利用,这些资源分别为物理的和逻辑的,物理的如:CPU、内存、输入输出设备(包括磁盘空间、磁盘读写臂、I/O总线、通讯线和各种卡等),逻辑的如:逻辑卷管理...
1.6 选择最有效率的表名顺序(只在基于规则的优化器中有效) 6 1.7 WHERE子句中的连接顺序 6 1.8 SELECT子句中避免使用 ‘ *‘ 7 1.9 减少访问数据库的次数 7 1.10 使用DECODE函数来减少处理时间 8 1.11 删除重复记录 ...
介绍如何对linux进行调优,重点看那些参数,各个参数的含义
在过去的十年中,Oracle已经成为世界上最专业的数据库之一。对于IT专家来说,就是要确保利用Oracle的...关于调优可以写整整一本书,不过,为了改善Oracle数据库的性能,有一些基本的概念是每个Oracle DBA都应该遵从的。
详尽的描述了性能测试报告如何写 对XX公司XX系统进行性能测试,客观、公正评估系统的性能现状。 1、开发正确有效的性能测试脚本,模拟最终用户操作行为,作为...如不满足,对性能瓶颈进行定位分析,提供性能调优建议。
weblogic 调优策略,前 言 第一章 应用程序调优 1.1.1 通用代码调优 1.1.2 减小没有必要的操作 1.1.3 使用合适的类型 1.1.4 尽量使用pool,buffer和cache 1.2 JDBC代码调优 1.2.1 严格资源使用 ...关于作者
关于软件测试基础技术的试题 以及软件工程师的面试题和试题
但是无论用什么办法调优,都必须要先读懂SQL的执行计划,了解应用程序的SQL的性能瓶颈在哪里,才可以进行有效的调优! 举个实际的应用场景,如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统性能...
为最有效地优化 Microsoft® SQL Server™ 2000 的性能,必须在极为多样化的情形中识别出会使性能提升最多的区域,并对这些区域集中分析。 虽然其它系统级性能问题(如内存、硬件等)也是研究对象,但经验表明从这些...
整个性能测试过程中,有效的性能测试需求分析才是整个性能测试过程中的重中之重。只有很好的完成了性能测试需求分析,才有可能去完整的对被测系统有一个很好的系统性能分析
在本节,我们将会讲述Linux的内存结构、地址分布和Linux如何有效地管理内存空间。 1.2.1 物理和虚拟内存 我们已经要面对选择32位和64位系统的问题。对于企业级客户的其中一个重要的不同是虚拟内存的地址是否能
关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的...
WebLogic8以上应用服务器的性能调优,涉及到各个线程数、虚拟机等参数的调优,对系统应用比较有效
此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集 。可提高系统的吞吐量。 -XX:ParallelGCThreads 年轻代并行垃圾收集的前提下(对并发也有效果)的线程数,增加并行度,即:...
结合笔者丰富的性能诊断调优经验,讲解如何有效分析和诊断性能问题、发现性能瓶颈。全书分为3篇,第1篇是性能测试基础篇,主要介绍性能测试的基础知识;第2篇是性能测试工具篇,主要介绍如何使用主流的性能测试工具...
通过发现问题、分析原因、优化方案和实施优化,可以有效解决MySQL性能问题。程序员需要掌握MySQL的性能监控工具和调优技术,如Explain、索引优化、配置参数调整等。通过具体的案例分析,帮助程序员更好地理解MySQL...