4GB RAM을 갖춘 4 CPU 코어 VPS가 있습니다. nginx/0.7.65, PHP 5.3.2 및 MySQL과 함께 Ubuntu 10.04를 실행하고 있습니다. nginx와의 통신에는 php5-fpm을 사용합니다. 나는 또한 PHP 캐싱을 보완하는 php5-apc를 가지고 있습니다.
이 시스템은 4개의 사이트를 운영하며 하루에 약 250만 페이지 보기를 보여줍니다.
문제 소개 - 페이지를 로드할 때 사이트에서 간헐적으로 오류 404가 표시됩니다. 잠재적으로 모든 페이지에서 이런 일이 발생할 수 있으며, 거기 앉아서 계속해서 새로 고칠 수 있으며 평균적으로 7~10회에 한 번씩 발생합니다.
내가 시도한 것 - Ubuntu 및 nginx 업데이트, php 및 nginx 구성 사용. 이 문제는 Ubuntu 11.10 및 nginx/1.0.5에서 재현되었습니다.
주목할만한 로그 - Nginx error.log 및 access.log는 일반적인 내용을 표시하지 않지만 404가 발행되면 보고합니다. php5-fpm.log가 표시됩니다:
Nov 20 21:47:45.640003 [ERROR] [pool www] unable to retrieve process activity of one or more child(ren). Will try again later.
그러나 이전 설정에서 본 것처럼 이것이 이 문제와 관련이 있는지 확신할 수 없습니다.
구성(공간 절약을 위한 이미지 링크) - * APC 설정, 조각화: 0% 및 캐시 전체 개수는 0임을 참고하세요.https://i.stack.imgur.com/i0TrK.png * nginx.conf
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
server_names_hash_bucket_size 64;
access_log off; #/var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
keepalive_timeout 0;
#keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
- nginx.conf에 포함된 일반적인 사이트 구성https://i.stack.imgur.com/I3Y4N.png
- pm.max_children = 10에서 pm.max_children = 30을 제외하고 내 php5-fpm.conf가 기본값입니다.
- 내 php5 구성이 기본값이고 편집 내용만 sendmail/postfix와 관련되어 있습니다.
- ulimit -n은 1024를 표시합니다.
도움이 되는 것 - 이것으로부터 제가 얻은 유일한 안도감은 두 개의 더 바쁜 사이트 중 하나를 자체 VPS로 옮기는 것입니다. 분명히 시스템에 충분한 리소스가 있으므로 모든 사이트를 하나의 vps에 두고 싶습니다. 어딘가에서 열린 파일 제한에 도달했습니까? PHP 관련 문제와 관련이 있지 않을까 의심됩니다.
이것이 어딘가의 구성 문제라고 확신합니다. 하지만 그것이 무엇인지 확신할 수 없었고 이 질문을 게시하기 전에 조사를 시도하는 데 48시간을 보냈습니다.
답변1
PHP >=5.3.4로 업그레이드하면 도움이 될 것입니다. 이 버그에 물린 것 같습니다.https://bugs.php.net/bug.php?id=53028