>  기사  >  백엔드 개발  >  Linux에서 php-cgi가 중지되면 어떻게 해야 할까요?

Linux에서 php-cgi가 중지되면 어떻게 해야 할까요?

王林
王林원래의
2021-09-26 16:32:572343검색

Linux에서 php-cgi가 중지되는 해결 방법은 nginx의 구성 항목을 변경하고, FastCGI 요청 수를 줄이고, [fastcgi_buffer_size 128k;]와 같이 버퍼를 변경하지 않고 유지하는 것입니다.

Linux에서 php-cgi가 중지되면 어떻게 해야 할까요?

이 기사의 운영 환경: linux 5.9.8, php 7, thinkpad t480 컴퓨터.

머리말:

실제 서버(centos 5.2 64비트 4G 메모리)에서 항상 웹사이트가 열리지 않는 문제가 있다는 것을 우연히 발견했습니다. 나중에 서버에 가서 확인해 보니 nginx와 php-cgi가 모두 실행되고 있었는데 이때 php-cgi의 CPU 사용량이 0이었습니다. 그래서 즉시 파일 핸들 제한을 확인해봤습니다:

ulimit -n

결과는 1024개로, 프로덕션 서비스에 비해 너무 작습니다.

온라인에서 제공되는 대부분의 솔루션은

ulimit -SHn 51200 # 51200可自己根据应用调整

직접 입력하는 것입니다. 이 방법의 단점은 일단 로그아웃하면 설정이 무효화된다는 것입니다.

/etc/rc.d/rc.local에 직접 명령어를 쓴다고도 하는데 오늘은 올바른 방법을 찾았습니다

/etc/security/limits.conf를 열어보니 아주 자세한 설명이 있으니 찾아보세요 다음을 설정하세요(그렇지 않다면 삽입하세요)

코드는 다음과 같습니다

* soft nofile 51200
* hard nofile 51200

종료 후 다시 로그인하여 확인하면 핸들 개수가 51200으로 올바르게 설정되어 있습니다.

비슷한 상황이 발생하면 파일 핸들 번호 설정이 너무 작아서 발생하는지 확인할 수 있습니다.

액세스 시 502 Bad Gateway에 대한 솔루션

Nginx 502 Bad Gateway는 요청한 php-cgi가 실행되었지만 어떤 이유로(일반적으로 리소스 읽기 문제) 완료되지 않아 php-cgi가 발생했음을 의미합니다. 프로세스가 종료됩니다. 일반적으로 동시성이 너무 높은 웹사이트에서는 이 오류가 발생하기 쉽습니다. 502 Bad Gateway가 나타나는 이유는 여러 가지가 있지만 대부분의 사람들은 아래의 매개변수를 수정하면 문제를 해결할 수 있습니다.

FastCGI 요청 수를 줄이고 버퍼를 변경하지 않도록 nginx의 여러 구성 항목을 변경하세요.

코드는 다음과 같습니다

fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

/usr/local/php/etc/php-fpm.conf 파일을 엽니다.

코드는 다음과 같습니다

25
requests">2048
65535
30s
60s

request_terminate_timeout은 fast-cgi의 실행 스크립트 시간을 의미하며 기본값은 0s입니다. 0의 의미는 php-cgi가 시간 제한 없이 계속 실행되도록 하는 것입니다. 여기서 0으로 설정하면 502 Bad Gateway가 나타날 때 502 상태가 계속 유지되며 변경되지 않습니다. 그러나 5초로 설정하면 php-cgi는 5초 후에 자동으로 복구됩니다. 이 값은 서버 성능에 따라 설정할 수 있습니다. 여기서는 60초로 설정했습니다.

max_children은 php-cgi의 처리 과정을 나타냅니다. max_children을 5-10과 같이 더 작은 값으로 설정하면 php-cgi가 "매우 피곤"해지고 처리 속도가 매우 느려지며 대기 시간이 길어집니다. 오랫동안 요청이 처리되지 않으면 504 Gateway Time-out 오류가 발생합니다. max_children 설정도 서버 성능에 따라 설정해야 하며, 일반적인 상황에서는 각 php-cgi에서 소비하는 메모리가 약 20M로 설정됩니다. 25.

php-fpm의 기본 정적 처리 방법으로 인해 php-cgi 프로세스가 오랫동안 메모리를 점유하고 해제할 수 없게 됩니다. 이 역시 nginx 오류의 원인 중 하나이므로 php-fpm의 처리 방법은 다음과 같습니다. Apache와 유사한 모드로 변경됩니다.

수정이 완료되면 lu-restart(LuManager 서버 관리 시스템)를 실행하세요.

추천 학습: php 교육

위 내용은 Linux에서 php-cgi가 중지되면 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.