Здравствуйте
Стоит Dns-server (BIND 9.10.3-P4-Debian) на операционной системе Debian 4.9.0-11-amd64. В пиковом состоянии на сервер примерно приходит 4000 запросов в секунду.
Сразу скажу железка сама не очень
2 x --- Intel(R) Xeon(TM) CPU 3.00GHz суммарно получается 4 core
4 G --- Ram
Случайно заметил что мой Dns не всегда мне отвечает либо бывает задержка . Примерно отвечал на 4 запроса и 5 . Думал проблема в iptbales так как написал правило :
1). iptables -A INPUT -p udp --dport 53 -m hashlimit --hashlimit-name Dns_speed_limit --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-above 300/minute -j DROP
2). iptables -A INPUT -p udp --dport 53 -m string --hex-string "|0000ff0001|" --algo bm -j DROP (ANY)
Убрав все правила перепроверил , но все так же . Немного поискав увидел напел кое что интересное
Кроме этого заметил очередь 200 000 в Recv-Q по запросу watch 'netstat -apn | grep :53 | grep -i named | grep 0.0.0.0'
Как я понял у меня заполняется буфер и поэтому пакеты дропаются. Решил увеличить буфер и не только ...
net.core.rmem_default=425984
net.core.wmem_default=425984
net.core.wmem_max=425984
net.core.rmem_max=425984
net.core.netdev_max_backlog=65536
net.core.somaxconn=1024
Таким образом чуть стало лучше но снова же бывает попадает в список (packets to unknown port received , receive buffer errors ) 1k пакетов. И в очереди Recv-Q бывает 426к а , dig отвечает в это время за 200-400 ms
Ресурсы
Поставил те же самыми настройками на другой более сильный сервер без каких либо поправок в ядре все нормаль . На этом сервере работали Apache , mysql , Wordpess пришлось выключить .
После решил прописать unlimited для этого pida в prlimit . Но результата нету .
Вопрос как мах оптимизировать сервер ? И где еще может быть узкое место ?