上回说了软件性能问题错误修复大法鉴赏,如果不给出正确方法,那就止步于笑谈。那么软件出了性能问题,究竟应该如何去定位呢?
首先,我们要明白一件事,软件发生性能问题,必定是资源不够用了。资源分为硬件资源和软件资源,硬件资源有:
软件资源有:
资源在使用时有三个维度:utilization(使用率),saturation(饱和度),errors(错误)。我们必须要先弄清楚这三个概念,然后才能查找性能问题。
在规定的时间内,资源用于服务工作的时间百分比。
资源不能用于服务额外工作的程度,通常有等待队列。饱和程度可以用排队长度或者排队所花时间来衡量。
软件运行出错。
研究这三个维度,查找性能问题的方法就叫USE 方法,USE 方法是一种研究高使用率、高饱和状态下性能问题最有效的方法。
使用率有两个红线:60%,100%
根据排队理论,60% 意味着优先级较低的工作将会被排在队列后面执行。100% 意味着该资源出现了严重的性能瓶颈,亟待解决。
饱和度:任何程度的饱和都是性能瓶颈。
错误:错误都是值得研究的,不仅仅是为了解决性能问题。
假设高速公路的收费站,一整天的使用率是 40%,你能据此断定收费站在早高峰的时候没有排队吗?
收费站现象表明了资源即使大部分情况下都是绰绰有余,但是系统依然会出性能问题,只是需要在特定时间点才能观察到。因此,我们还需要预留应急资源,或者异步处理分担峰值压力。
我一个研究服务端性能的文章竟然找不到话题节点,只能先借用移动性能测试的节点了,麻烦管理员加个服务端性能测试节点。
[1] 更准确地说,应该是瞬时使用率高达 100%