У меня есть 4-ядерный VPS с 4 ГБ оперативной памяти. Он работает под управлением Ubuntu 10.04 с nginx / 0.7.65, PHP 5.3.2 и MySQL. Я использую php5-fpm для связи с nginx. У меня также есть php5-apc, дополняющий кеширование php.
Эта система управляет четырьмя сайтами и показывает примерно 2,5 миллиона просмотров страниц в день.
Введение в проблему. Сайты периодически показывают ошибку 404 при загрузке страницы. Это потенциально происходит на каждой странице, и я могу сидеть и обновляться снова и снова, и это будет происходить в среднем один раз из семи-десяти раз.
Что я пробовал - Обновление 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. http://i.imgur.com/fV8hU.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/*;
}
Что помогает - Единственное облегчение, которое я получил от этого, - это перемещение одного из двух наиболее загруженных сайтов на собственный VPS. Очевидно, я бы хотел, чтобы все сайты были на одном vps, так как в системе более чем достаточно ресурсов. Я где-то достигал лимита открытых файлов? Я подозреваю, что это может быть связано с чем-то связанным с php.
Довольно уверен, что это где-то проблема с конфигурацией. Не уверен, что это могло быть, и потратил 48 часов, пытаясь исследовать, прежде чем опубликовать этот вопрос.
Обновление до PHP> = 5.3.4 должно помочь, поскольку кажется, что вас укусила эта ошибка: https://bugs.php.net/bug.php?id=53028