14 Мар
Оптимизация nginx+php-fpm+mysql
Речь пойдет о оптимизации нашего сервера под высокую нагрузку.
Итак, для начала надо увеличить кеш для mysql, иначе он будет часто вылетать с cant-connect с 11 ошибкой, что означает невозможность блокировки сокета:
my.cnf
skip-locking
wait_timeout=60
connect_timeout=10
interactive_timeout=120
join_buffer_size=1M
query_cache_size=128M
query_cache_limit=2M
max_allowed_packet=16M
table_cache=1024
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
key_buffer = 256M
key_buffer_size=64M
myisam_sort_buffer_size = 8M
max_connections = 10000
open_files_limit = 100000
thread_cache_size = 1024M
Также в мускуле желательно выполнить sql-запрос:
set global max_connections = 500;
Дальше, чтобы при дофига открытых файлах ничего не зависало, ожидая, пока дадут доступ на юзанье тех или и иных файлов:
/etc/security/limits.conf
* soft nofile 65525
* hard nofile 100000
nginx hard nofile 10240
Юзер nginx – это nginx, а nofile – количество открываемых файлов.
Дальше, надо в целом увеличить лимиты в системе:
/etc/sysctl.conf
kern.ipc.nmbclusters=65536
kern.ipc.somaxconn=32768
kern.ipc.maxsockets=204800
kern.maxfiles=256000
kern.maxfilesperproc=230400
Дальше лезем в конфиг nginx:
worker_processes 8;
worker_rlimit_nofile 51200;
worker_priority -5;
events {
worker_connections 4096;
use epoll;
}
Дальше лезем в конфиг php-fpm:
max_requests 4096
max_children 100
Редактируем /etc/pam.d/login, добавив строку:
session required /lib/security/pam_limits.so
Следующая команда увеличит лимит до 65535:
echo 65535 > /proc/sys/fs/file-max
Понравилась статья? Поделись с остальными.