Добрый день.
Сервер: Intel® Core™ i7-3930K 6 ядер, 64 GB DDR3 RAM, 2 x 3 TB 6 Gb/s HDD SATA3
ОС (uname -a): Linux *** 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u1 x86_64 GNU/Linux
Redis сервер 2.8.19
На сервере крутиться Redis-сервер, задача которого обслуживать запросы от двух PHP серверов.
Проблема: сервер не справляется с пиковыми нагрузками и перестает обрабатывать поступающие запросы или делает это очень медленно.
Какие попытки оптимизации сервера я предпринял:
cat /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
ulimit -n 100032
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
cat /etc/sysctl.conf
vm.overcommit_memory=1
net.ipv4.tcp_max_syn_backlog=65536
net.core.somaxconn=32768
fs.file-max=100000
cat /etc/redis/redis.conf
tcp-backlog 32768
maxclients 100000
Какие то настройки я нашел на redis.io, какие то в блогах.
Тесты
redis-benchmark -c 1000 -q -n 10 -t get,set
SET: 714.29 requests per second
GET: 714.29 requests per second
redis-benchmark -c 3000 -q -n 10 -t get,set
SET: 294.12 requests per second
GET: 285.71 requests per second
redis-benchmark -c 6000 -q -n 10 -t get,set
SET: 175.44 requests per second
GET: 192.31 requests per second
При увеличении числа клиентов уменьшается скорость обработки запросов и, самое ужасное, Redis-сервер перестает обрабатывать входящие запросы и на PHP серверах появляются десятки исключений вида
Uncaught exception 'RedisException' with message 'Connection closed' in [no active file]:0\n
Stack trace:\n
#0 {main}\n thrown in [no active file] on line 0
Что делать? Что еще оптимизировать? Сколько вообще такая машина может потянуть клиентов?
Спасибо!