Натиснувши клавішу F5 у вікні браузера і утримуючи її протягом декількох хвилин ви можете влаштувати легку DDOS атаку на сайт. Функціональна клавіша F5 дає команду браузеру перезавантажити сторінку.
Якщо ви її натиснули і утримуєте тривалий час, то ваш комп'ютер намагається завантажити її (сторінку) багато і багато разів, чим створює навантаження на сервер у вигляді множинних запитів. А так як можливості будь-якого сервера не безмежні, то від надлишку «почуттів» запитів він може перестати працювати.
Зависне сервер чи ні залежить від технічних характеристик і налаштувань самого сервера, сайту і використовуваної CMS. У цій статті я опишу як правильно налаштувати веб-сервер Apache2 щоб навіть найскромніший сервер VDS з 512 МБ пам'яті справлявся з великою кількістю запитів, в тому числі викликаних клавішею F5.
Підготовка до налаштування сервера
Визначимо який модуль MPM використовує Apache2. Для CentOS це виглядає так:
Відмінно, у нас Server MPM: Prefork
Налаштування Apache, що б не було проблем з жором пам'яті
Короткий опис параметрів модуля Apache MPM Prefork
StartServers - число дочірніх процесів, створюваних при запуску сервера.
MinSpareServers - мінімальне число невикористовуваних (запасних) дочірніх процесів сервера, які очікують потенційні запити.
MaxSpareServers - максимальне число запасних процесів, які очікують потенційні запити. Якщо це число буде перевищено, зайві процеси будуть вбиті.
MaxClients - найважливіший параметр модуля MPM prefork, встановлює верхню межу кількості одночасно активних процесів. Саме від нього залежить споживання пам'яті. Його значення перекриває значення попередніх параметрів.
ServerLimit зазвичай дорівнює MaxClients.
MaxRequestsPerChild - як часто сервер переробляє процеси, вбиваючи старі і починаючи (запускаючи) нові. Корисний при витоках пам'яті Apache і його бібліотек.
KeepAlive - забезпечує довгоживучі сесії HTTP, що дозволяють відправляти кілька запитів через один і той же з'єднання. Корисно включити, якщо веб-сторінка містить багато зображень. Але якщо використовуєте NGINX як проксісервер, то залиште значення OFF.
Читайте також: Рішення проблеми Failed: initscripts.x86_64 0: 9.49.24-1.el7 на CentOS 7
Найважливіший параметр = MaxClients. він як раз і говорить про кількість одночасних процесів вебсервера Apache.
Як дізнатися значення MaxClients
Визначити його значення не складно. Розрахунок значення приведу для сервера з розміром оперативної пам'яті 512 МБ. Вирішуємо, що віддаємо для ресурсів Apache 50% оперативної пам'яті, тобто в нашому випадку 256 МБ.
Визначаємо скільки пам'яті віджирали один процес:
Отримуємо наступні значення:
Виходить, що в середньому один процес Apache споживає 21 МБ. Відповідно в відведеному обсязі 256 МБ ми можемо запустити 12 процесів.
Виправимо файл конфігурації під нове значення:
Інші параметри поправив виходячи з рекомендацій в інтернеті для сервера з ОЗУ 512 МБ.
Після внесення змін до файл конфігурації не забудьте перезавантажити Appache:
Подяки
При написанні статті були використані наступні джерела: