PHP -cgi.exe 占用 CPU100%没办法解决吗?

2020-12-08 15:27:30 +08:00
 RickyC

自己测试哪个页面 CPU 也不会 100%, 但是线上运行一会儿, CPU 就可能 100%

怎么能知道是哪个文件,哪个语句, 导致 CPU 占用高?

windows 下 php 没有慢日志功能 慢也不代表 CPU 占用高吧?

1821 次点击
所在节点    PHP
13 条回复
crazypig14
2020-12-08 15:36:02 +08:00
profile 的工具,xdebug xhprof,还有换到 linux 吧
realpg
2020-12-08 15:44:53 +08:00
都 2020 年了 还 PHP-CGI.exe 呢
RickyC
2020-12-08 15:50:24 +08:00
@crazypig14 谢谢
wangritian
2020-12-08 16:38:12 +08:00
怀疑是访问不稳定的第三方 api,没有加超时时间
julyclyde
2020-12-08 16:43:53 +08:00
@wangritian 如果是没设置超时时间应该不会 cpu 占那么高啊,一直在等待应该是 0%啊
wangritian
2020-12-08 16:58:04 +08:00
@julyclyde 进程或线程资源不释放导致的切换成本?只是凭经验猜测
julyclyde
2020-12-08 17:00:00 +08:00
@wangritian 也可能是 spinlock 之类的?
R18
2020-12-08 17:04:20 +08:00
上 sentry
buffzty
2020-12-08 17:27:46 +08:00
php 这种情况基本都是 while 死循环了.用二分法把文件打断点 die(__FILE__.__LINE__); 找到卡的那个 while 排查一下就行 php 问题解决起来太方便了.
RickyC
2020-12-09 11:09:45 +08:00
@buffzty 我们自己访问哪个页面, 都没有看到卡死的情况;
ben1024
2020-12-09 11:28:10 +08:00
一般都是内存超掉,CPU 超掉的情况是不是内存配比过小,同时配置了太多请求进程,限制下请求进程看下
用 xhprof 排查运行机制也可以
RickyC
2020-12-09 13:33:44 +08:00
@ben1024
xhprof 我是不是要在每个页面和接口里都添加代码才能调试?
接口输出时, 会使用 exit.
ben1024
2020-12-09 13:51:12 +08:00
@RickyC
在入口注入就好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/733349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX