====== Настройка 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. Работа виртуальных хостов под разными пользователями]]