我想知道一种检查 HTTPD 进程以查找在它们上运行的 PHP 脚本的方法。
我已经做了一个“netstat”,发现一些进程持有数据库和网络套接字的时间太长了,现在我想知道是什么脚本导致的。
顺便说一句,我正在使用 Linux。
sym*_*ean 14
您需要mod_status启用Apache 模块(CentOs 的主要 Apache 配置文件位于 /etc/httpd/conf/httpd.conf)
LoadModule status_module modules/mod_status.so
Run Code Online (Sandbox Code Playgroud)
with 选项(这将在与上面相同的配置文件中设置)ExtendedStatus on
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On
Run Code Online (Sandbox Code Playgroud)
以及为此设置的一些访问权限(将下面替换XXX.XXX.XXX.XXX为您的 IP - 这可以在与上面相同的配置文件中找到)
# 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 localhost 127.0.0.1 XXX.XXX.XXX.XXX
</Location>
Run Code Online (Sandbox Code Playgroud)
最后,您将通过访问http://your-server-name/server-status看到每个 HTTPD 进程在做什么
这将显示当前以此处介绍的方式处理的 pid 和 URL 。
建议的 mod_status 是查看当前进程正在执行的操作的一个很好的选择,您启用它(通常添加 Allow 语句以允许您从您访问网络服务器的 IP 范围查看它),然后浏览http://site.name/server-status并获取输出。一个例子可以在 Apaches 自己的网站上看到:http : //www.apache.org/server-status
另一个查看进程情况的有用工具是lsof,如果您有一个“挂起”的已知 PID,您可以键入lsof -p <pid>以查看该进程的情况。要匹配所有进程,您可以键入类似lsof -c apache或 的内容lsof -c httpd。它是一个非常通用的工具,有很多你想看到的选项。
最后,您strace可以附加到正在运行的进程,以查看它们目前正在通过系统调用等strace -p <pid>执行的操作。警告,此 CAN 有时会挂起正在运行的进程,因此请注意并在需要时重新启动。
lsof(8) 手册页:http : //linux.die.net/man/8/lsof
strace(1) 手册页:http : //linux.die.net/man/1/strace
| 归档时间: |
|
| 查看次数: |
36654 次 |
| 最近记录: |