加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

ubuntu – 分析uwsgi strace日志以找出为什么它需要高CPU使用率

发布时间:2020-12-13 21:14:34 所属栏目:Nginx 来源:网络整理
导读:我通过uwsgi运行一个带nginx的django站点.问题是当流量变大时,uwsgi进程会占用大量的CPU时间.相同的配置在测试服务器上工作正常,而siege / ab模拟大量并发流量. 这是uwsgi进程的一个strace日志. http://dl.dropbox.com/u/43017476/strace.log 还有一些sysctl

我通过uwsgi运行一个带nginx的django站点.问题是当流量变大时,uwsgi进程会占用大量的CPU时间.相同的配置在测试服务器上工作正常,而siege / ab模拟大量并发流量.

这是uwsgi进程的一个strace日志. http://dl.dropbox.com/u/43017476/strace.log

还有一些sysctl:

fs.file-max = 128000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.netdev_max_backlog = 4096
net.ipv4.tcp_max_syn_backlog = 4096
net.core.somaxconn = 250000
net.ipv4.tcp_keepalive_time = 300

nginx conf与Google的其他教程非常相似.我一直想弄清楚但没有运气.但是我发现了很多这样的东西:

22:12:02.932276 read(8,"722",16384) = 11
22:12:02.932504 poll([{fd=8,events=POLLIN|POLLPRI}],1,0) = 0 (Timeout)
22:12:02.932547 write(8,"173SET NAMES utf8",19) = 19
22:12:02.932643 read(8,"712",16384) = 11
22:12:02.933237 poll([{fd=8,0) = 0 (Timeout)
22:12:02.933279 write(8,"213set autocommit=0",21) = 21
22:12:02.933330 read(8,"71",16384) = 11

而文件描述符8是一个mysql套接字.但Mysql服务器似乎工作得很好.我可以看到每个“读取”系统调用消耗大部分CPU时间,但不知道这里出了什么问题.同一个数据库服务器一直在为以前的PHP站点提供服务.

任何想法都赞赏.

最佳答案
strace可能不会显示消耗CPU时间的内容,因为它显示系统调用.显示进程消耗的CPU时间是在应用程序本身中执行代码所花费的时间.您正在显示的读/写/轮询很可能是正常的MySQL通信,或者是应用程序轮询mysql FD(非阻塞)以查找新流量.

对于如何找到高CPU的原因,我真的没有一个解决方案,但我想我会指出你花费太多时间在strace输出中寻找答案:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读