
nginx 프로세스가 계속 종료됩니다. 여기에 오류가 있습니다.
2023/04/18 11:47:29 [alert] 11073#0: worker process 11312 exited on signal 9
2023/04/18 11:47:29 [alert] 11073#0: fork() failed while spawning "worker process" (12: Cannot allocate memory)
2023/04/18 11:47:29 [alert] 11073#0: could not respawn worker process
램이 충분하다는 것을 알고 있습니다. 제가 제어하는 VPS이고 램을 최대 4GB까지 연결했지만 여전히 마찬가지입니다. 매우 가벼운 nginx 서버이며 PHP가 없으며 간단한 이미지 제공입니다. nginx 1.0.15를 실행하면 오래되었다는 것을 알지만 수년 동안 문제 없이 작동했습니다. 몇 년 동안 이 VPS에는 아무것도 변경되지 않았습니다.
답변1
fork() failed while spawning "worker process" (12: Cannot allocate memory)
단서입니다.
살펴보면 man 2 fork
어떤 조건이 그 위치로 이어지는지 알 수 있습니다.
ENOMEM fork()
메모리가 부족하여 필요한 커널 구조를 할당하지 못했습니다.
ENOMEM
"init" 프로세스가 종료된 PID 네임스페이스에 하위 프로세스를 생성하려고 했습니다. pid_namespaces(7)를 참조하십시오.
이 두 가지 조건 중 하나여야 합니다. 같은 시간에 전체 VPS가 다시 시작됩니까? 그렇다면 당신의 대답이 있습니다.
ps -o lstart 1
컨테이너에서 수행하고 init
프로세스가 시작된 시기를 확인하여 알 수 없는 경우 잠재적으로 이를 테스트할 수 있습니다 .
그렇지 않고 '메모리가 부족합니다'라는 메시지가 계속 표시된다면 전체 시스템 메모리가 부족하기 때문일 수 있습니다. 이는 컨테이너에서 귀하가 알고 있는 내용이 아니므로 호스팅 공급자에게 추가 정보를 요청해야 합니다.
답변2
signal 9
제공하신 오류 메시지에 따르면 신호를 나타내는 로 인해 작업자 프로세스가 종료되는 것 같습니다 SIGKILL
. 또한 오류 메시지는 fork() system call is failing
프로세스가 새 하위 프로세스를 생성할 수 없음을 의미합니다.
"메모리를 할당할 수 없습니다"라는 오류 메시지는 시스템에 메모리가 부족하여 fork() 시스템 호출이 실패할 수 있음을 나타냅니다. 이 문제에 대한 한 가지 가능한 해결 방법은 시스템에서 사용할 수 있는 메모리 양을 늘리는 것입니다.
사용 가능한 메모리 및 스왑 공간에 대한 정보를 표시하는 "free -tm" 명령을 사용하여 서버에서 사용 가능한 메모리를 확인할 수 있습니다. 시스템의 메모리가 부족하면 서버에 메모리를 더 추가하거나 nginx 구성을 조정하여 더 적은 메모리를 사용해야 할 수도 있습니다.
또 다른 가능한 해결책은 nginx 구성에서 작업자 프로세스 수를 줄이는 것입니다. nginx.conf 파일에서 "worker_processes" 설정을 조정하여 이를 수행할 수 있습니다. 작업자 프로세스 수를 줄이면 nginx 서버의 메모리 사용량을 줄일 수 있습니다.