스택 :
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.5 (stretch)
Release: 9.5
Codename: stretch
PHP 7.3.14-5+0~20200202.52+debian9~1.gbpa71879 (cli) (built: Feb 2 2020 07:56:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.14-5+0~20200202.52+debian9~1.gbpa71879, Copyright (c) 1999-2018, by
Zend Technologies
문제 :
이 서버는 현재 1년 넘게 작동하고 있지만 어제부터 PHP에 몇 가지 문제가 있습니다. (희망합니다.) PHP가 충돌하고 뭔가 이후에 다시 로드되지 않는 것 같습니다(문제를 찾지 못했습니다).
nginx 로그:
2020/04/07 12:51:11 [crit] 770#770: *17055 connect() to unix:/run/php/php7.3-fpm.sock
failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1,
server: ***, request: "GET /api/me HTTP/1.1", upstream:
"fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "***"
2020/04/07 12:51:11 [crit] 770#770: *17057 connect() to unix:/run/php/php7.3-fpm.sock failed
(2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: *
, request: "GET /api/seo/get? path=*** HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-
fpm.sock:", host: "***"
질문: PHP가 그의 pid를 죽이는 것이 치명적일 수 있는 것이 무엇인지 아십니까? 충돌 시 해당 프로세스를 다시 되돌릴 수 있는 모니터를 알고 계십니까?
대체 답변: 직접 모니터링하고 php7.3-fpm을 다시 시작할 수 있지만 시간이 많이 걸립니다...
건배
편집: 의견에서 제안한 대로 아래의 /var/log/php7.3-fpm 로그 결과를 확인했습니다.
[07-Apr-2020 11:05:19] NOTICE: [pool www] child 5504 started
[07-Apr-2020 11:14:42] WARNING: [pool www] server reached
pm.max_children setting (6), consider raising it
[07-Apr-2020 11:32:18] WARNING: [pool www] server reached
pm.max_children setting (6), consider raising it
[07-Apr-2020 11:54:21] WARNING: [pool www] server reached
pm.max_children setting (6), consider raising it
[07-Apr-2020 12:02:26] WARNING: [pool www] server reached
pm.max_children setting (6), consider raising it
[07-Apr-2020 12:30:16] NOTICE: Terminating ...
[07-Apr-2020 12:30:16] NOTICE: exiting, bye-bye!
PHP 하위 노드의 안전 제한은 무엇입니까?
솔루션이 pool.d/www.conf pm 값을 다음으로 변경했습니다.
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.process_idle_timeout = 5s;