zoukankan      html  css  js  c++  java
  • 查找linux下进程占用CPU过高的原因,以php-fpm为例

    很多时候,线上服务器的进程在某时间段内长时间占用CPU过高,为了优化,我们需要找出原因。

    1、找出占用CPU最高的10个进程

    ps aux | sort -k3nr | head -n 10
    

    或查看占用内存最高的10个进程

    ps aux | sort -k4nr | head -n 10  

    或者使用 top ,按 1 显示CPU列表,再按 shift+p 以CPU排序

    top
    

      

    2、对进程进行跟踪查看

    查看进程打开的文件

    lsof -p 进程PID

    查看进程在处理的文件

    ll /proc/进程PID/fd
    

    查看进程的内存使用情况

    pmap 进程PID
    

    通过strace来跟踪进程的系统调用

    strace -p 进程PID
    

    当然我们也可以查看汇总的信息

    strace -cp 进程PID
    

    如果我们想跟踪某进程所有的系统调用,并统计调用时间,并导出为文件,可用如下命令

    strace -o 导出文件 -T -tt -e trace=all -p 进程PID
    

      

    3、查找php-fpm占用过高的原因

    我们可以配置php-fpm的慢日志,查找是哪些文件导致php-fpm占用过高。

    先找到php-fpm.conf文件位置

    ps -ef|grep php
    

    修改php-fpm.conf,并打开日志选项

    ;错误日志
    error_log = log/php-fpm.log
    ;访问日志
    access.log = log/$pool.access.log
    ;访问日志格式
    access.format = "%R - %u %t "%m %r%Q%q" %s %f %{mili}d %{kilo}M %C%%"
    ;慢日志
    slowlog = log/$pool.log.slow
    ;慢日志超时时间
    request_slowlog_timeout = 3
    

    注意:log 目录需要我们自已创建。

    我们可以通过php-fpm的慢日志定位是哪个文件中哪行哪个方法慢,这样针对性的进行优化。

  • 相关阅读:
    使用sublimehighlight 将文本 转化html
    iOS- 制作U盘安装Mac OS X 系统
    垃圾回收的常见算法
    jvm的三种参数类型
    HashMap遍历取值
    不要在 foreach 循环里进行元素的 remove/add 操作
    Arrays.asList()使用指南
    正确使用 equals 方法
    elasticsearch安装与配置(在Linux环境下配置)
    本地访问Linux里端口连接失败
  • 原文地址:https://www.cnblogs.com/jkko123/p/10693355.html
Copyright © 2011-2022 走看看