V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
RickyC
V2EX  ›  PHP

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

  •  
  •   RickyC · Dec 8, 2020 · 2452 views
    This topic created in 1977 days ago, the information mentioned may be changed or developed.

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

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

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

    13 replies    2020-12-09 13:51:12 +08:00
    crazypig14
        1
    crazypig14  
       Dec 8, 2020
    profile 的工具,xdebug xhprof,还有换到 linux 吧
    realpg
        2
    realpg  
    PRO
       Dec 8, 2020
    都 2020 年了 还 PHP-CGI.exe 呢
    RickyC
        3
    RickyC  
    OP
       Dec 8, 2020
    @crazypig14 谢谢
    wangritian
        4
    wangritian  
       Dec 8, 2020
    怀疑是访问不稳定的第三方 api,没有加超时时间
    julyclyde
        5
    julyclyde  
       Dec 8, 2020
    @wangritian 如果是没设置超时时间应该不会 cpu 占那么高啊,一直在等待应该是 0%啊
    wangritian
        6
    wangritian  
       Dec 8, 2020
    @julyclyde 进程或线程资源不释放导致的切换成本?只是凭经验猜测
    julyclyde
        7
    julyclyde  
       Dec 8, 2020
    @wangritian 也可能是 spinlock 之类的?
    R18
        8
    R18  
       Dec 8, 2020
    上 sentry
    buffzty
        9
    buffzty  
       Dec 8, 2020
    php 这种情况基本都是 while 死循环了.用二分法把文件打断点 die(__FILE__.__LINE__); 找到卡的那个 while 排查一下就行 php 问题解决起来太方便了.
    RickyC
        10
    RickyC  
    OP
       Dec 9, 2020
    @buffzty 我们自己访问哪个页面, 都没有看到卡死的情况;
    ben1024
        11
    ben1024  
       Dec 9, 2020
    一般都是内存超掉,CPU 超掉的情况是不是内存配比过小,同时配置了太多请求进程,限制下请求进程看下
    用 xhprof 排查运行机制也可以
    RickyC
        12
    RickyC  
    OP
       Dec 9, 2020
    @ben1024
    xhprof 我是不是要在每个页面和接口里都添加代码才能调试?
    接口输出时, 会使用 exit.
    ben1024
        13
    ben1024  
       Dec 9, 2020
    @RickyC
    在入口注入就好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3781 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 04:41 · PVG 12:41 · LAX 21:41 · JFK 00:41
    ♥ Do have faith in what you're doing.