【性能分析的目的】:找出系统性能瓶颈硬件瓶颈软件瓶颈提供性能优化方案升级硬件改进系统结构达到合理的硬件和软件配置使系统资源使用达到平衡但遗憾的是 解决一个性能瓶颈,往往又会出现另外的瓶颈或者其他问题,所以性能优化更加切实的目标是做到在一定范围内使系统的各项资源使用趋向合理和保持一…
【性能分析的目的】:
找出系统性能瓶颈
硬件瓶颈
软件瓶颈
提供性能优化方案
升级硬件
改进系统结构
达到合理的硬件和软件配置
使系统资源使用达到平衡
但遗憾的是
解决一个性能瓶颈,往往又会出现另外的瓶颈或者其他问题,所以性能优化更加切实的目标是做到在一定范围内使系统的各项资源使用趋向合理和保持一定的平衡。
系统运行良好的时候恰恰也是各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如CPU过渡使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘IO增加和CPU开销增加(用于进程切换、缺页处理的CPU开销)
【性能分析相关的人】:
{系统管理员}:
掌握系统运行状况(负载)
掌握系统资源使用情况(硬件)
掌握应用程序对资源的使用情况(应用程序执行效率,反馈给应用开发人员)
有针对性的开展服务器性能优化(硬件、软件、软件配置)
{大型应用的系统结构设计人员}:
了解程序执行效率
了解系统架构中的性能瓶颈,优化系统结构
设计更好的应用系统架构
{软件开发人员}:
了解程序执行效率
改进程序逻辑、改进性能
【性能相关的各个环节】:
{硬件资源}:CPU、内存、存储系统、带宽
{操作系统}:SMP性能
VM性能
IO性能(存储设备、网络设备、异步IO)
文件系统性能(大文件优化、小文件优化、写优化、读优化、网络文件系统)
多线程性能
服务器软件
开发平台/中间件软件/框架软件
应用程序
【系统使用和优化的原则】:对资源的使用状况作长期的监控和数据收集
Snmp+MRTG
Sar
程序的优化和系统结构的优化比硬件的性能优化更有效
避免不受限制的使用系统资源
设置各项服务对资源的使用限额,如Apache, MySQL,PHP等
始终保留一定量的空闲资源
多少合适?根据应用的特点,比如是否有突发性使用增长?
日常情况下,保留至少 60% 的系统资源,以应付突发使用增长。
日常情况下,资源使用率达到 80% 时,你必须有所行动了,尤其是web应用。
系统硬件达到合理的配置(以适合应用的特点为依据,资源消耗均衡为目标)
系统性能的水桶理论
应用软件对资源的使用要均衡(理想目标)
怎么样就算是均衡了?我也在摸索中……
理想状况为:CPU消耗到50%的时候,磁盘的带宽也到50%,磁盘的tps也到50%,内存使用也到50%(除去可以提供给cache的内存)
【典型应用对系统资源使用的特点】:
{动态内容为主的Web应用}:动态内容为主的Web应用
频繁执行程序,如 Perl, PHP, Java 等,消耗CPU严重
提供并发用户访问,因此系统进程数多,消耗内存多,当内存不足时,使用交换内存也会增加CPU的开销
磁盘的写IO比较频繁(主要为随机写),比如生成cache文件,更新session文件等。
内存充足时读取的内容可以被cache住,cache的命中率和文件更新的频繁程度成反比,磁盘的读IO相对较小
{静态内容为主的Web应用 (如Squid Cache)}:静态内容为主的Web应用 (如Squid Cache)
网络带宽瓶颈
小文件的随机读取频繁,内存充足时可以缓解磁盘随机读的压力
系统内存不足时磁盘IO量会比较大(读、写、交换内存),因此增加CPU的开销
{数据库应用}:数据库应用
数据库查询语句复杂,大量的 where 子句,order by, group by 排序等,CPU容易出现瓶颈
表太大时,查询遍历全表造成磁盘读的IO量大,容易出现读IO等待的情况
数据更新量大或者更新频繁时,造成磁盘写的IO量大
内存不足时频繁使用交换内存
{软件下载}:
网络带宽瓶颈
存储系统带宽瓶颈(读)
{流媒体服务}
网络带宽瓶颈
存储系统带宽瓶颈(读)
【常见的性能分析工具介绍】:
Vmstat
Top
Free
Uptime
sysstat 工具包
Iozone
Strace
希望看完以上工具的使用说明,让你能够知道如何判断系统瓶颈在那里、内存是否够用、CPU是否够用、磁盘IO是否够用、网络和磁盘带宽是否够用等问题。
(
财经责编:
常秀美 
)