根据我们实际对不同系统进行性能测试的经验,几乎所有的系统,都存在性能问题,很多还是比较严重。我们没有发现性能问题,往往是使用用户的个数太少,没有发现。
比如,某大学开发的一个系统,使用了几个月,反馈良好。做了一轮性能测试,发现并发用户连10个都达不到,其实性能很糟糕,没有发现这些问题,只是因为用户太少了。
越是重要的系统,用户量越多,越容易暴漏性能问题。
当性能出现问题,如何进行性能分析和定位?目前流行的做法,就是进行全链路压测,然后看链路上的计数器。
对于复杂的系统,往往使用集群和微服务等架构,使用了各种支撑软件。因此,可能存在的性能瓶颈的点,就非常多。
我们针对典型的支撑软件和平台,介绍各种计数器。
Nginx主要的计数器:
Mysql的计数器很多,如下:
myISAM的计数器:
Innodb:
线程和IO:
网络流量和临时表:
通过mysql的各个计数器,我们就可以比较准确的判定是否存在数据库问题。当然,还有一个非常重要的计数器,就是慢日志。
Redis也具有大量的计数器:
状态计数器:
内存计数器:
客户端计数器:
持久化计数器:
上面,我们列举了几个重要的支撑软件的计数器,便于我们能够迅速的定位问题,帮助我们实现性能调优。
推荐阅读: