- 浏览: 125660 次
- 性别:
- 来自: 北京
博客专栏
-
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 464http://ifeve.com/sun-misc-unsaf ... -
java 之DelayQueue实际运用示例
2016-06-15 17:09 548http://www.cnblogs.com/sunzhenc ... -
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
2015-07-03 19:11 710window下在同一台机器上安装多个版本jdk,修改环境变量不 ... -
java实现base64
2015-04-29 15:30 548BASE64和其他相似的编码算法通常用于转换二进制数据为文本数 ... -
最全的静态网站生成器(开源项目)
2015-04-26 00:53 555最全的静态网站生成器(开源项目) http://www.ite ... -
java 代码时间和内存测试
2015-04-18 22:26 653// 测试用了多少内存 import java.util ... -
系统打印日志的10条建议(翻译)
2015-04-14 14:33 531http://uptoknow.iteye.com/blog/ ... -
Java编程最差实践
2015-04-14 14:32 422http://macrochen.iteye.com/blog ... -
几行代码写RPC
2015-04-13 22:55 479转自梁飞博客 package com.alibaba.stud ... -
58龙哥教你“如何做系统性能优化”(纯干货)
2015-04-12 21:58 620如何做系统性能优化 性能优化的目标是什么?不外乎两个: 时间 ... -
java 关于for和foreach,兼顾效率与安全
2014-12-05 14:46 17500关于for和foreach,兼顾效率与安全 对于数组的访问,是 ... -
java 关于for循环
2014-12-05 14:41 592关于使用for循环 有人喜欢使用for作类似while的循环: ... -
会话COOKIE? 持久COOKIE?
2014-11-07 00:15 585关于COOKIE和SESSION的关系,一直没搞清楚。网上一搜 ... -
内存cookie与持久cookie
2014-11-05 22:27 592cookie分两种 :会话cookie(session coo ... -
Java字符串底层理解
2014-09-11 15:11 7861. 栈(stack)与堆(heap)都是 ... -
java 字符串相加
2014-09-10 14:01 1564字符串相加。string + (原作者: 火龙果) 为了加 ... -
java虚拟机垃圾回收深入理解
2013-03-18 17:52 950JAVA学习之4 引用与JVM 1.java内存管理分为内存分 ...
相关推荐
在当今信息技术快速发展的时代背景下,Java作为一门广泛使用的编程语言,其开发规范和性能调优成为了提升开发效率和保证系统稳定性的关键。阿里巴巴作为全球领先的科技企业,在Java开发和性能调优方面积累了丰富的...
性能调优对于确保WebLogic Server上运行的应用程序能够高效、稳定地运行至关重要。性能调优主要涉及对应用程序、服务器和底层硬件资源的优化,以此提升系统性能和响应能力。 文档首先提出了在J2EE应用程序体系结构...
### 大数据各类性能调优 #### 12.1 配置原则 在大数据环境中,合理配置资源是实现高效能的关键。以下是一些基本原则: **原则1:CPU核数分配原则** - **数据节点**: 建议预留2~4个核心给操作系统和其他进程(如...
【Java性能调优指南】 在Java开发中,性能调优是一项关键任务,它涉及到程序运行效率、资源利用和系统稳定性。本指南主要关注Java虚拟机(JVM)调优、编码最佳实践以及微基准测试的重要性。 **基本规则** 1. **...
通过深入学习和实践"DB2 Performance(1-Tools).ppt"中的内容,可以全面了解和掌握DB2性能调优的各个方面,从而在实际工作中有效地解决性能问题,提升系统效能。在数据库管理的道路上,持续学习和不断优化是保持竞争...
### WAS性能调优的核心知识点 #### 一、IBM WebSphere Application Server (WAS) V6 性能概览 IBM WebSphere Application Server (WAS) V6 是一款高性能的企业级应用服务器,它提供了丰富的功能来支持Java应用程序...
《WebLogic性能调优:官方文档精粹》 在企业级应用服务器领域,WebLogic以其卓越的性能和稳定性,成为了众多企业的首选。然而,再强大的平台也需经过精心调优才能发挥其最大效能。本文基于一份来自Oracle官方的中文...
### MySQL性能调优工具介绍与应用 MySQL作为全球最广泛使用的开源关系型数据库之一,在企业级应用中的地位不可动摇。为了确保MySQL能够高效稳定地运行,掌握一系列性能调优工具至关重要。本文将详细介绍多种MySQL...
### ARCSDE性能调优方案解析 #### 一、概览与重要性 ARCSDE,作为一款由ESRI开发的地理信息系统(GIS)数据库管理软件,被广泛应用于地图数据的存储、管理和分发。然而,ARCSDE的性能不仅直接影响着GIS应用的效率...
SQL Server性能调优是数据库管理员和开发人员必须掌握的关键技能,它涉及到一系列步骤和工具,以优化数据库的运行效率,减少延迟,提高查询速度,以及确保资源的有效利用。本实验主要涉及了两个核心工具:SQL ...
本书推荐了一些有效的方法来动态调整缓冲区缓存的大小。 **3. 并发控制** - **锁定机制**:了解Oracle中的不同锁类型及其作用机理是避免死锁和提高并发性的关键。本书介绍了如何使用`V$LOCK`等视图来监控锁定情况,...
性能测试与调优指南是一份重要的参考资料,其内容涵盖了软件性能测试的整体流程、方法论、结果分析以及性能调优的基本技术。该指南详细阐述了性能测试的目标、类型、阶段、过程,强调了测试者在分析性能需求、制定...
### Ceph性能调优策略详解 #### 概述 Ceph作为一款分布式存储系统,在提供高性能、高可用性以及可扩展性的基础上,还具备自我修复和自我管理的能力。本文将根据给定文档“ceph_性能调优6_2.pdf”的内容,深入探讨...
- **ADDM(Automatic Database Diagnostic Monitor)**:自动数据库诊断监控器,基于AWR数据生成诊断报告,提供性能调优建议。 - **V$视图**:Oracle 提供了大量的动态性能视图(V$ Views),这些视图包含了关于...
在IT行业中,Web服务器性能调优是至关重要的,它直接影响着网站的响应速度、稳定性和用户体验。本压缩包文件集中了多个文档,专门探讨了针对WebLogic和Tomcat这两个广泛应用的Java Web服务器的性能优化策略。 首先...
### Websphere性能调优详解 #### 一、JVM的调整 JVM(Java虚拟机)的调优是Websphere性能优化的关键步骤之一。调整JVM的主要目的是确保应用程序能够在资源约束下高效运行,避免内存溢出等问题。具体操作是在...