如何查找Linux服务器性能瓶颈
Linux服务器性能瓶颈的发现需要从app,os,hardware,network env等四个方面来查找。系统硬件和软件资源的平衡是关键点。一旦失衡就造成系统负载过大,用户访问过慢等现象。举例来说,cpu资源的过度利用会造成等待进程的增加,从而导致应用程序响应的缓慢,而进程的增加导致系统内存资源开销增大,一旦物理内存耗尽,系统会使用虚拟内存,而虚拟内存的过度使用造成磁盘I/O增加。
分析系统性能涉及到的人员不仅有系统管理员,系统架构人员及程序开发人员。系统管理员需要掌握的信息包括cpu,memory,I/O,network带宽。如果发现除了这些导致系统瓶颈的是app的执行效率就会涉及到架构人员及开发人员。
系统管理员从系统硬件,网络设备,操作系统配置,应用程序架构和程序代码5个方面进行综合判断。高性能的要求是什么呢?
一方面系统硬件,多个cpu,据权威部门的测试两个4核要比8个单核cpu要低25-30%。内存方面,32位系统,app单个进程最大只能使用2G内存,所以要使用更大内存,尽可能安装64位系统。I/O方面主要涉及的是raid,raid磁盘组的形成比单个硬盘更高的I/O和磁盘性能。网络带宽方面一般都是千兆带宽或光纤。memory方面根据经验如果物理内存小于4G,swap分区一般位物理内存的2倍。如果物理内存大于4G,一般swap分区大小等于物理或小于物理内存大小。另外一方面对kernel参数的优化。举例来说如果部署的Oracle数据库,需要对系统共享内存段(kernel.shmmax,kernel.sshmmni,kernel.shmall)、系统信号量kernel.sem,文件句柄fs.file-max等参数优化;如果部署的是web应用,需要对网络参数进行优化,如net.ipv4.ip_local_port_range,net.ipv4.tcp_tw_reSUSE,net.core.somaxconn等。文件系统方面Linux下可选的文件系统有ex2,ex3,xfs,reiserFS,可根据不同app,选择相应的FS.
另一方面针对app方面。1、以静态内容为主的web应用,这类应用小文件居多,读操作频繁。涉及的应用apache/nginx等web服务及前段cache的squid,varinsh等。另外针对访问并发过大,网络带宽应该尽可能增大。2、以动态内容为主的应用如JAVA,PHP,PERL,CGI等,这类应用写操作频繁造成cpu资源利用过大,要配置较大的memory和高性能的cpu. 3, 数据库应用,其主要特点是消耗内存和I/O。常见优化方式使web和db server分开。针对db中的大表应该尽可能拆分,动静分离和缓存系统的增加也是常用优化方式,例如memcached. 4,软件下载应用。apache使用阻塞模式的I/O操作,性能及并发能力较差,常用的Lighttpd使用异步I/O方式,处理下载资源应用较好一些。5,流媒体服务应用一般对带宽和存储的I/O能力要求较高。
Linux系统常见的系统性能分析工具有vmstat,iostat,sar,free,uptime,netstat,top,这里说下sar,
例如查看CPU的整体负载情况,每3秒统计一次,统计5次:sar -u 3 5
系统的CPU技术是从0开始的,如果要查看第二个CPU的运行负载:sar -P 1 3 5
查看系统磁盘的读写性能:sar -d 3 5
下面说下web应用的性能分析及优化案例
LAMP环境,查看apache配置文件中的MaxClients的value,可以在500-2000中分别进行测试,另外注意keepalive是否打开对性能的影响。
apache+tomcat动静分离的环境的优化,可以使用Mod_JK提高tomcat应用的整合性能。注意tomcat配置文件server.xml中connectionTimeout,maxKeepAliveRequests,maxProcesses,适当加大这几个参数的value.