PHP 스크립트가 시간을 초과하여 내 서버를 죽이지 않도록합니다.

StackOverflow https://stackoverflow.com/questions/374843

  •  22-08-2019
  •  | 
  •  

문제

원인은 아마도 디스크 공간이 부족하여 모든 것이 이상하게 작동했기 때문일 것입니다. 다른 사람이 비슷한 문제가있는 경우 어쨌든이 질문을 떠날 것입니다.

나는 오랫동안 매달린 몇 가지 PHP 스크립트를 가지고 있지만, 그들이 죽이지 않을 때 실제로 많은 CPU 시간을 사용하지 않는 것 같습니다. 여전히 그들은 LightTPD가 이미 최대 양의 PHP 프로세스를 생성하는 것을 불가능하게 만들고 있습니다.

스크립트가 실행할 수있는 최대 CPU 시간을 제어하기 위해 함수로 사용하거나 php.ini에 넣을 수있는 set_time_limit을 알고 있습니다. 내가 원하는 것은 CPU 시간이 아니라 시계 시간이 아니라 내 웹 서버 (LightTPD)에서 실행하는 모든 PHP 스크립트를 제한하는 것입니다.

중요한 경우, 이것은 내 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 Procs가 더 많습니다.

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 ...

끊임없이 보모를 할 필요가없는 구성을 설정하는 데 도움이되는 아이디어는 크게 감사 할 것입니다!

도움이 되었습니까?

해결책

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)

다른 팁

LightTPD에서 그렇게 할 수 있는지 잘 모르겠습니다. 그러나 "스피너"스크립트를 설정하여 주기적으로 매달린 프로세스를 확인하고 죽일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top