本文及后续几篇性能排查的博文主要内容均翻译自vmware官方文档,并加入了一些个人看法。原文链接如下:

http://communities.vmware.com/servlet/JiveServlet/download/10352-1-28235/vsphere4-performance-troubleshooting.pdf

 

什么是性能问题:

性能问题是在对应用系统进行性能管理和容量规划的过程中体现出来的。系统在立项上线的时候确定了系统的性能需求和SLA,性能管理就是在收集、维护并分析系统的性能数据(包括应用系统、OS、网络、存储设备等)然后做出改进的过程,最终使得系统性能和SLA能满足立项时的要求。

容量规划是指通过建模或分析的方法对系统预期的负载和基础架构的变更做出合理的规划,使应用系统能够满足SLA。

 

怎么判断性能问题:

定义了SLA的系统,看其性能SLA否能够满足,比如响应时间,延时等。

没有定义SLA的系统,看用户的投诉,但在这种情况下并没有一个合理的标准来判断系统是否真的有问题。

 

troubleshooting的前提:

1. 为了避免不必要的工作,在着手进行性能的troubshooting前应该对现在发现的问题有清晰的描述,对什么样的性能是可接受的有明确的定义,避免管理员和客户之间的推诿扯皮或者陷入无穷无尽的性能优化的循环之中。

2. 性能问题发生在某一特定的系统负载下,所以在troubleshooting的过程中最重要的是保证系统负载不会发生大的变化,比如增加大量的用户或者给现有的用户增加新功能。管理员可以通过性能基线数据或者拜访客户的方式来判断系统负载是否发生了变化。

 

虚拟机和物理机性能的比较:

在虚拟环境中,不可避免的要比较虚拟机和物理机之间的性能差别,不同的esx主机,存储设备、cpu/内存分配以及是否和高负载虚拟机共享资源等等因素会对虚拟机的性能产生很大的影响。所以参与比较的虚拟机和物理机应该有相同的内存、cpu配置,并使用相同或相近的存储设备。一般建议在应用系统业务逻辑层面进行比较(如比较物理机和虚拟机上应用的响应时间,延时等),主机的cpu使用率这类操作系统层级的数据通常不是很精确。

 

troubleshooting的方法:

现象(观察现象,响应慢,延时长)——–> 测量值(通过监控工具获得)——–> root cause(性能问题的根本原因,可能是配置问题,资源过度竞争等,通常不能够通过监控工具获得,需要进行合理的推断和不断的修正)

 

在进行troubleshooting前需要搞清楚几个问题:

1. 性能优化到什么程度就ok了?how do we know when we are done?

2. 我们从哪里开始排查问题?

3. 如何知道找什么来定位问题? how do we know what to look for to identify a problem?

4. 如何定位root casuse?

5. 如何fix找到的root cause?

6. 如果没有发现问题,下一步该怎么办?

 

troubleshooting 的工具:

1. vSphere client

2. esxtop/resxtop

 

troubleshooting 的流程:

step1. 确定性能优化的目标

step2. Basic troubleshooting using vSphere client

step3: Advanced troubleshooting using esxtop/resxtop

step4. 结束