Назад | Перейти на главную страницу

Wordpress на Nginx + php5-fpm + varnish + APC, высокая загрузка ЦП и памяти

После нескольких дней отладки и настройки параметров я устаю и не могу найти решение. Любезное руководство.

У меня следующий сервер в DigitalOcean:

64GB Memory
8 Core processor
200GB SSD drive

И я веду на нем единственный сайт Wordpress. Сайт получает высокую посещаемость. (От 2000 до 3000 одновременных пользователей в реальном времени) И я уверен, что из-за моих плохих настроек я теряю трафик и не могу обслуживать страницы для пользователей. Я ожидаю, что пользователей в реальном времени будет 5000+, но всегда остается около 2000.

Постоянно получаю ошибки OOM и из-за которых mysql или php5-fpm убивается и сайт отключается. Если я настрою php-fpm и nginx я получил 502 и 503 ошибки. Или я получаю upstream timed out (110: Connection timed out)' или FastCGI sent in stderr: PHP message: PHP Fatal error: Maximum execution time of 30 seconds exceeded ошибка.

Теперь я изменил настройки, чтобы не получать никаких ошибок, но трафик упал примерно до 1500 одновременных пользователей, и он отказывается расти. Так что я уверен, что в моих настройках что-то не так.

/etc/php5/fpm/pool.d/www.conf настройки:

pm = dynamic
pm.max_children = 500
pm.start_servers = 150
pm.min_spare_servers = 100
pm.max_spare_servers = 200
pm.max_requests = 5000

Настройки FastCGI: /etc/nginx/conf.d/default.conf

location ~ \.php$ {
             try_files $uri =404;
             # proxy buffers - no 502 errors!
             proxy_buffer_size               128k;
             proxy_buffers                   4 256k;
             proxy_busy_buffers_size         256k;

            fastcgi_buffers 256 16k;
            fastcgi_buffer_size 128k;
            fastcgi_max_temp_file_size 0;
            fastcgi_intercept_errors on;
            fastcgi_keep_conn off;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass unix:/dev/shm/php-fpm-www.sock;


        }

Настройка APC: /etc/php5/fpm/php.ini

[apc]
apc.write_lock = 1
apc.slam_defense = 0
apc.shm_size = "1024M"

Я заметил это php5-fpm процессы занимают много памяти. Например. когда я вычисляю средний объем памяти на процесс, я получаю: ps --no-headers -o "rss,cmd" -C php5-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }' дает мне 238M для одновременного трафика 1100.

Пожалуйста, объясните мне, где моя конфигурация неверна. Потому что я на 100% уверен, что мой трафик задыхается.


Дополнительная информация

Конфигурация Nginx: /etc/nginx/nginx.conf

worker_processes  12;
worker_rlimit_nofile 20000;


events {
    worker_connections  3000;
    use epoll;
    multi_accept on;
}

Но я заметил, что ulimit на сервере:

ulimit -n показывает 1024 только. Это связано с моей проблемой?