====== Настройка Web сервера ======
===== Оптимизация конфигурации Apache =====
* TimeOut - указывайте как можно меньшее значение для данной директивы (особенно для сервера, который может быть поддвержен DDoS атаке).
* KeepAliveTimeout директва - также нужно снизить ее значение или полностю выключить. Значения различных тайм-аут директив, представленные другими модулями должны быть проверены.
* Директивы LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine, LimitXMLRequestBody должны быть тщательно настроены на ограничение потребления ресурсов, вызванных запросами клиентов.
* Убедитесь что вы используете директиву AcceptFilter (на ОС которые поддреживают ее).По умолчанию она включена в конфигурации Apache httpd, но для своей работы может потребовать пересборку с новыми настройками ядра вашей ОС (*nix, *bsd).
* Используйте директиву MaxClients чтобы указать максимальное количество клиентов которые смогут быть одновременно подключены к серверу, уменьшив значение директивы вы можете снизить нагрузку на web-сервер.
* Выбор другого mpm-модуля может позволить вам обрабатывать больше одновременных соединений. По умолчанию в *nix системах устанавливается mpm - prefork, он наиболее прожорлив, и наимение производителен. См. обзор mpm модулей:
* https://spinbox.techtracker.com/manual/ru/mpm.html
* https://httpd.apache.org/docs/2.0/ru/mod/
===== Некоторые консольные команды, необходимые при работе =====
Число процессов Apache:
# ps aux | grep httpd |wc -l
Число коннектов на 80 порт:
# netstat -na | grep :80 | wc -l
То же, в статусе SYN:
# netstat -na | grep :80 | grep syn
Пример SYN-флуда:
# netstat -na | grep :80 | grep SYN | wc -l 767
Посмотреть много ли разных IP:
# netstat -na | grep :80 | grep SYN | sort -u | more
На какой домен чаще всего идут запросы:
# tcpdump -npi eth0 port domain
Статус Apache:
# apachectl status
Посмотреть откуда IP или Domain:
# whois xxx.xxx.xxx.xxx
или:
# jwhois xxx.xxx.xxx.xxx
С какого IP сколько запросов:
# netstat -na | grep :80 | sort | uniq -c | sort -nr | more
Количество соединений с сервером:
# cat /proc/net/ip_conntrack | wc -l
Вывод информации в реальном времени, IP которые соединены с сервером и какое количество соединений по каждому IP:
# netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
===== Ссылки =====
* [[https://anikin.pw/ustanovka-mpm-itk-na-apache2-rabota-virtualnyih-hostov-pod-raznyimi-polzovatelyami.html|Установка mpm-itk на apache2. Работа виртуальных хостов под разными пользователями]]