在 OSX Snow Leopard 本地开发机器上,Httpd 的 CPU 占用率高达 100%,如何修复?

在 OSX Snow Leopard 本地开发机器上,Httpd 的 CPU 占用率高达 100%,如何修复?

我在 Snow Leopard 上运行 apache 2.2.17 作为我的 PHP 开发堆栈。当我访问单个页面时,httpd 的 CPU 使用率会变得很疯狂 - 在 30% 和 100% 之间上下波动,并且一直保持这种状态,即使我不继续访问服务器上的文件也是如此。我查看了 Apache 日志,只提到缺少 ico. 文件,所以我看不出有什么问题。这是 Apache/MySQL/PHP 的简单安装。

有人知道是什么原因导致的这种情况以及/或者如何限制 httpd 等进程的 CPU 数量吗?

编辑:这是我的服务器状态打印的内容......

Server Version: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8r DAV/2 PHP/5.3.4
Server Built: Dec 1 2010 09:58:15
Current Time: Monday, 31-Oct-2011 21:00:49 CET
Restart Time: Monday, 31-Oct-2011 20:58:26 CET
Parent Server Generation: 0
Server uptime: 2 minutes 22 seconds
Total accesses: 101 - Total Traffic: 0 kB
CPU Usage: u28.39 s5.71 cu0 cs0 - 24% CPU load
.711 requests/sec - 0 B/second - 0 B/request
3 requests currently being processed, 0 idle workers
WWR.............................................................
................................................................
................................................................
................................................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

Srv PID Acc M   CPU SS  Req Conn    Child   Slot    Client  VHost   Request
0-0 12388   0/101/101   W   34.10   0   0   0.0 0.00    0.00    127.0.0.1   mars    GET /server-status HTTP/1.1
1-0 12392   0/0/0   W   0.00    0   0   0.0 0.00    0.00    127.0.0.1   mars    GET /a/wp/ko/api/users/0 HTTP/1.1
2-0 12402   0/0/0   R   0.00    0   0   0.0 0.00    0.00    ?   ?   ..reading..

编辑2:

服务器状态的另一个视图显示:

Srv PID Acc M   CPU SS  Req Conn    Child   Slot    Client  VHost   Request
0-0 12499   0/2/2   _   0.00    22  0   0.0 0.00    0.00    127.0.0.1   localhost   GET /quant.js HTTP/1.1
1-0 12502   0/13/13 R   0.00    0   5   0.0 0.05    0.05    ?   ?   ..reading..
2-0 12503   0/0/0   R   0.00    0   0   0.0 0.00    0.00    ?   ?   ..reading..
3-0 12504   0/1/1   _   0.00    22  12  0.0 0.00    0.00    127.0.0.1   localhost   GET /z/8278/adzerk1_2_4_49,adzerk2_2_17_50?keywords=apache2,htt
4-0 12505   8/8/8   W   3.35    0   0   0.0 0.00    0.00    127.0.0.1   mars    GET /server-status HTTP/1.1
5-0 12506   0/101/101   _   29.95   8   314 0.0 0.07    0.07    127.0.0.1   mars    GET /a/wp/ko/api/users/0 HTTP/1.1
6-0 12507   0/3/3   R   0.65    0   0   0.0 0.00    0.00    ?   ?   ..reading..
7-0 12508   0/0/0   R   0.00    0   0   0.0 0.00    0.00    ?   ?   ..reading..

注意 Adzerk - 我不知道这是从哪里来的。这只是我本地的开发机器,apache 如何处理 adzerk 的 get 请求??我看到了另一个“Bidvertise”

答案1

如果您的页面是 php 页面,请尝试调试该页面。使用系统日志()函数添加调试信息并读取 syslog 写入的日志以找出它在哪里停止或在哪里花费大量时间执行。

更好的是,您可以使用 PHP 分析器或 PHP 调试器。

相关内容