zoukankan      html  css  js  c++  java
  • php 应用 cpu 100% 调试方法

    找出进程占用cpu高的原因。

    进程占用cpu高,一般是由于进程长时间占用cpu,又没有主动释放占用。如果想主动释放cpu,可以调用sleep。在写程序的时候,尤其要注意while 等循环的地方。

    找出php进程在执行那段代码

    $sudo gdb -p 10434
    (gdb) print (char *)executor_globals.active_op_array->filename
    $13 = 0x2924118 "/home/admin/gearman_manager/pecl-manager.php"
    (gdb) print executor_globals->current_execute_data->opline->lineno
    $14 = 55
    (gdb) c
    Continuing.
    ^C
    Program received signal SIGINT, Interrupt.
    0x00000031d32306d0 in sigprocmask () from /lib64/libc.so.6
    (gdb) print executor_globals->current_execute_data->opline->lineno
    $15 = 71
    (gdb) c
    Continuing.
    ^C
    Program received signal SIGINT, Interrupt.
    0x00000000006250e1 in zend_hash_find ()
    (gdb) print executor_globals->current_execute_data->opline->lineno
    $16 = 53
    

    如果对上面的命令有疑问,可以查看 当cpu飙升时,找出php中可能有问题的代码行
    根据上面的信息,我们可以知道,cpu高时,正在执行/home/admin/gearman_manager/pecl-manager.php文件。并且正在执行53和71行附近的代码。

    还可以通过strace进行调试

  • 相关阅读:
    两小时入门Docker
    Django之Model操作
    Django-channels 实现WebSocket实例
    Python项目中的单元测试
    將Python打包成 exe可执行文件
    CORS 跨域
    购物车模块
    登陆模块
    Git 基本用法
    Django ORM性能优化 和 图片验证码
  • 原文地址:https://www.cnblogs.com/sidesky/p/4244758.html
Copyright © 2011-2022 走看看