Я в настоящее время выполняю Nginx + PHP-FPM для обслуживания рекламы на OpenX. В настоящее время мое время отклика ужасно, даже во времена низкой загрузки. Однако мой ЦП и Ресурсы памяти прекрасны, таким образом, я, может казаться, не выясняю, каково узкое место.
Моя текущая конфигурация для nginx и php-fpm:
worker_processes 20;
worker_rlimit_nofile 50000;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 15000;
multi_accept off;
use epoll;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush off;
keepalive_timeout 0;
#keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
# Default location
location / {
root /var/www;
index index.php;
}
## Parse all .php file in the /var/www directory
location ~ .php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_ignore_client_abort off;
}
PHP-FPM:
rlimit_files = 50000
max_children = 500
Я только включал параматерей PHP-FPM, которых я изменил для PHP-FPM.
У кого-либо есть какие-либо подсказки относительно того, как я могу оптимизировать его так, я могу служить большему количеству запросов? Я вижу ужасающее время отклика прямо сейчас.
у вас на машине 20 процессоров или ядер? также, возможно, попробуйте события со значением по умолчанию для вашей ОС ... может быть, больше процессов fcgi вместо большего количества nginx ... вероятно, достаточно начать с 2-4 рабочих nginx ...
Вам определенно следует сократить количество рабочих, поскольку я сомневаюсь, что у вас есть 20 ядер / процессоров. Кроме того, я бы посмотрел на ваш сервер базы данных, есть большая вероятность, что проблема именно там.
Кроме того, вы увеличили worker_rlimit_nofile
до 50000
. Надеюсь, вы знаете, что операционная система обычно устанавливает ограничение на 1024 (по умолчанию), вы можете попытаться запросить текущий limit, набрав ulimit -n
Вы можете поднять жесткое ограничение NOFILE (количество открытых файлов), выполнив эту команду ulimit -n 50000
в init.d или посетить этот другой вопрос о stackoverflow , чтобы узнать, как использовать limits.conf
для постоянной установки ограничений для всей системы.