有一个问题与我在这里想知道的服务器故障类似: 我怎样才能find哪个PHP脚本占用了所有的服务器资源? 但我不认为任何答案都能回答我的问题。
今天,我被我的一个客户发送了截图。 他不知道这是什么意思,所以他把它发给我,向他解释。 该图像是由他的托pipe服务提供商发送的。 我的客户的网站运行缓慢,我想他问托pipe人为什么,所以他们给他的形象。 该图像似乎是top命令的屏幕截图,它显示一个文件占用了90%以上的CPU。 我觉得这非常有趣,并且很想知道如何自己做。
正如我所说,屏幕截图似乎是最高的命令,但是当我运行顶部,并获得服务器忙,我不会得到同样的结果。 我确定我运行的脚本占用了一些无限循环的CPU,但是我得到的是apache2作为使用CPU的Command,而它们的屏幕截图显示了:
/usr/bin/php /path/to/index.php
这是截图的样子:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 username 16 -2 134m 26m 7528 R 98 0.2 00:00:50 /usr/bin/php /path/to/file.php
我的看起来像这样:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 19632 www-data 20 0 44432 18m 3608 S 27.1 0.9 00:00:82 apache2
注意他们如何显示/ usr / bin / php和拥有CPU的文件的path,但是我的只是显示了apache2,这实际上告诉我没有什么用处。
我一直想做这样的事情,并找出什么文件正在使用CPU,现在,我的问题是,他们如何做到顶部? 我知道我可以使用一个探查器,事实上,我喜欢上面的问题有两个很好的build议,但我很好奇,他们如何做到顶部。
提前致谢。
两个系统之间的区别很明显,在您的客户端系统上,PHP以CGI可执行文件(这是托pipe提供程序的常用选项)的forms运行,并且在您的系统上,它作为Apache模块运行。 CGI意味着每当需要执行一个PHP脚本时,就会启动一个单独的程序,这个脚本在顶部输出中列出。 另一方面,将其作为Apache模块运行,意味着PHP解释器只是Apache的一个子程序,没有自己的过程,不能列在最上面。
要find类似CGI案例中的顶级信息,可以尝试使用ApacheTop 。