原因可能是我的磁盘空间不足,造成一切奇怪的工作。无论如何,如果其他人有类似的问题,我会留下这个问题。
我有一些已经挂了很长时间的PHP脚本,但显然它们并没有真正占用大量的CPU时间,因为它们不会被杀死。他们仍然无法让lighttpd产生更多的PHP进程,因为它们已经产生了最大数量的进程。
我知道set_time_limit可以用作函数或放入php.ini来控制脚本可以运行的最大CPU时间。我想要的是限制我的web服务器(lighttpd)运行的所有PHP脚本,而不是CPU时间,而是时钟时间。
如果重要,这是我的lighttpd配置文件中的PHP部分。
fastcgi.server = (".php" => ((
"bin-path" => "/opt/local/bin/php5-cgi",
"socket" => "/tmp/php.socket" + var.PID,
"min-procs" => 16,
"max-procs" => 16,
"idle-timeout" => 15,
)))
这是来自lighttpd的服务器状态。您可以看到PHP的运行时间比我讨价还价的时间长,导致服务器堵塞。奇怪的是,似乎还有比我的max-proc更多的PHP过程。
legend
. = connect, C = close, E = hard error
r = read, R = read-POST, W = write, h = handle-request
q = request-start, Q = request-end
s = response-start, S = response-end
388 connections
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhrhhhhhhhhhhhhhhhhhhhhhhhhrhhhhhhhhhhh
hhhhrhhhhhhhhhhrhrhhhrrhrhhhhhrhhhrhhhhhhrhhhrrrhr
rrhrrrhrhhhhrrhrrhhrrhrrhrrrrrrrrrrrrh
Connections
Client IP: Read: Written: State: Time: Host: URI: File:
204.16.33.51 0/0 0/0 handle-req 1361 ... (a PHP script)
204.16.33.46 0/0 0/0 handle-req 1420 ... (another PHP script)
... gazillion lines removed ...
任何可以帮助我设置我不必经常照看的配置的想法都会非常感激!
答案 0 :(得分:1)
我不确定你能在lighttpd中做到这一点。但是,您可以设置一个“微调器”脚本来定期检查挂起的进程并将其终止。
答案 1 :(得分:1)
你可能最好编辑php.ini文件并在那里设置权限。
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 32M ; Maximum amount of memory a script may consume (8MB)