正在处理的请求数和闲置工人数

正在处理的请求数和闲置工人数

我有一台 SLES 10 Linux 服务器,有时 Apache 会使它的 CPU 达到 100%。

我可以ps ax看到,Apache 已经产生了大约 50 个 Apache 进程。

例如,该命令能否ps告诉我每个 Apache 进程正在做什么?

或者也许有其他方法可以让我查看哪些网页引发了这个问题?

答案1

我的 /etc/httpd/conf/httpd.conf 文件有以下部分:

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .example.com
    Allow from 127. 192.168.1.
</Location>

因此如果我去http://192.168.1.1/服务器状态,我收到一个页面,提示我:

  1. 服务器版本
  2. httpd 正常运行时间
  3. 当前 CPU 使用率
  4. 正在处理的请求数和闲置工人数

  5. 每个进程正在执行的操作的网格
  6. 近期请求

    192.168.3.1 的 Apache 服务器状态

    服务器版本:Apache/2.2.3 (Red Hat)
    服务器构建时间:2009 年 7 月 14 日 06:04:04

    当前时间:2010 年 7 月 17 日星期六 10:20:31 CDT
    重启时间:2010 年 7 月 17 日星期六 10:13:12 CDT
    父服务器代数:0
    服务器正常运行时间:7 分 19 秒
    总访问次数:51 - 总流量:156 kB
    CPU 使用率:u0 s0 cu0 cs0
    .116 请求/秒 - 363 B/秒 - 3132 B/请求
    当前正在处理 1 个请求,7 个空闲工作者

    __W_____................................................................
    ................................................................................
    ................................................................................
    ..............................................................................

    记分牌键:
    “_”等待连接,“S”启动,“R”读取请求,
    “W”发送回复,“K”保持活动(读取),“D”DNS 查找,
    “C”关闭连接,“L”记录,“G”优雅完成,
    “I”工作者空闲清理,“。”没有当前进程的开放插槽

    Srv PID Acc M CPU SS Req Conn 子槽客户端 VHost 请求
    0-0 20715 0/2/2 _ 0.00 418 0 0.0 0.01 0.01 192.168.3.97 dit GET /服务器状态 HTTP/1.1
    1-0 20716 0/49/49 _ 0.00 128 0 0.0 0.15 0.15 192.168.3.97 dit GET /服务器状态 HTTP/1.1 2-0
    20717 0/0/0 W 0.00 0 520222374 0.0 0.00 0.00 192.168.3.97 dit GET /服务器状态 HTTP/1.1

答案2

strace可以告诉您特定进程在系统调用级别上正在做什么,但它不会为您提供正在发生的事情的“50 英尺视图”。您需要将其使用的系统调用拼凑在一起才能弄清楚。

答案3

如果您的网站有数据库后端,那么您可以在 DBMS 中查看当前正在运行的命令。也许这可以帮助您缩小网站代码中生成负载的位置。

否则你可以增加日志级别httpd 守护进程。然后,您将在日志中获得更多信息。

答案4

您可能会发现 top 比 ps 更具信息量。

相关内容