Тайм-аут PHP-скриптов, чтобы они не убивали мой сервер

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

  •  22-08-2019
  •  | 
  •  

Вопрос

Вероятно, причина заключалась в том, что мне не хватило места на диске, из-за чего все работало странно.В любом случае я оставлю этот вопрос, если у кого-то еще возникнет подобная проблема.

У меня есть несколько PHP-скриптов, которые зависли в течение длительного времени, но, по-видимому, они не используют много процессорного времени, поскольку их не убивают.Тем не менее, они не позволяют Lighttpd запускать какие-либо PHP-процессы, поскольку максимальное их количество уже создано.

Мне известно о set_time_limit, который можно использовать как функцию или поместить в php.ini для управления максимальным временем процессора, которое может выполнять скрипт.Я хочу ограничить все PHP-скрипты, запускаемые моим веб-сервером (lighttpd), не по времени процессора, а по времени часов.

Если это имеет значение, это часть PHP из моего файла конфигурации Lighttpd.

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 работал намного дольше, чем я рассчитывал, и это привело к засорению сервера.Как ни странно, похоже, что 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 ...

Буду очень признателен за любые идеи, которые помогут мне настроить конфигурацию, за которой мне не придется постоянно присматривать!

Это было полезно?

Решение

Вероятно, вам лучше отредактировать файл 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