渐渐的发现性能优化的确是一个长期的复杂的工作,需要长时间的监控和数据积累,只有有了数据才能够判断系统的瓶颈可能出现在什么地方,有哪些可能的解决方法。系统的优化永远是一个监控、测试、优化、再监控的循环过程,没有捷径,没有一劳永逸。最近上的虚拟化项目,充分体现了这一点。
一般情况下,从用户反馈回来的信息只有系统响应慢,再详细的就只有自己去监控了,没有在生产系统上采集到的第一手数据,优化基本上无从下手。通常情况下,主要包括cpu、内存、IO、网络等四方面的数据。
系统可能存在的瓶颈一般可以划分为IO密集型和cpu密集型,前者如DB服务器,文件服务器等,后者如mail服务器,科学计算等。
数据收集的过程也是一个建立性能的base line的过程,什么情况下性能算好,什么情况下不好,需要丰富的运维经验或者也可以基于对系统性能的预期,达到了预期就认为性能是好的。
主要用到的测试工具有:iostat、vmstat、sysbench、iozone、nload、iftop、iperf、top、sar、mpstat、netstat、iptraf、tcpdump、tcptrace、netperf
本文主要介绍vmstat、mpstat,vmstat和mpstat包含在centos默认的安装包里面,无需单独安装配置。
下面是vmstat的输出结果:
[tianjing@tianjing-ops Tue Nov 15 10:31 AM ~]$vmstat 5 |
第一部分procs:
r: The number of processes waiting for run time. 等待运行的进程数 |
第二部分memery
swpd: the amount of virtual memory used. free: the amount of idle memory. buff: the amount of memory used as buffers. cache: the amount of memory used as cache. 不知道buff和cache有什么区别? |
第三部分swap
si: Amount of memory swapped in from disk (/s). 从虚拟内存中换入的内存的总量 so: Amount of memory swapped to disk (/s). 从内存换出到虚拟内存中的总量 |
第四部分IO
bi: Blocks received from a block device (blocks/s). |
第五部分system
in,被处理过的中断数 如果interrupts(in)非常高,context switch(cs)比较低,说明这个 CPU 一直在不停的请求资源; 如果context switch(cs)比 interrupts(in)要高得多,说明内核不得不来回切换进程; |
mpstat:
[tianjing@tianjing-ops Tue Nov 15 01:54 PM ~]$mpstat -P ALL 3 |
-P用于指定cpu,ALL表示全部,也可以用数字表示第几个cpu。
数字3表示每三分钟刷新一次。
参考连接:
http://www.vpsee.com/2009/11/linux-system-performance-monitoring-cpu/
http://www.vpsee.com/2009/11/linux-system-performance-monitoring-introduction/