从系统的角度分析影响程序执行性能的因素——SA20225205 黄兴宇 (4)

这里我选择了nginx来分析性能影响因素,通过在容器内搭建nginx,然后用另一个终端进行大量请求测试发现CPU使用率很高,但是看下面的进程的CPU使用率好像很正常。

这里使用top和pidstat命令来定位问题,发现task任务数量不正常,想到可能是短时间的应用导致的问题,如下面的两个:

(1)应用里直接调用了其他二进制程序,这些程序通常运行时间比较短,通过top等工具发现不了。

(2)应用本身在不停地崩溃重启,而启动过程的资源初始化,很可能会占用很多CPU资源。

另外通过对nginx大量请求测试可能会出现丢包问题。可以总结为以下几个方面:

在两台 VM 连接之间,可能会发生传输失败的错误,比如网络拥塞、线路错误等;

在网卡收包后,环形缓冲区可能会因为溢出而丢包;

在链路层,可能会因为网络帧校验失败、QoS 等而丢包;

在 IP 层,可能会因为路由失败、组包大小超过 MTU 等而丢包;

在传输层,可能会因为端口未监听、资源占用超过内核限制等而丢包;

在套接字层,可能会因为套接字缓冲区溢出而丢包;

在应用层,可能会因为应用程序异常而丢包;

总之,对于具体的应用程序,我们可以从CPU ,内存, I/O以及网络等几个方面去分析影响性能的因素,利用性能测试工具去定位和解决问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjwgy.html