5/5 - (1 vote)

В сучасних умовах високої конкуренції та зростання навантаження на веб-сервіси оптимізація серверних компонентів стає необхідністю для забезпечення стабільної роботи, високої продуктивності та готовності до масштабування. У цій статті ми докладно розглянемо, коли потрібна оптимізація серверів, які завдання вона вирішує, а також наведемо реальний приклад комплексної оптимізації на основі звіту з налаштування ключових сервісів: Nginx, PHP-FPM та MariaDB.

Коли потрібна оптимізація серверних компонентів?

Оптимізація необхідна у наступних випадках:

  • Зростання відвідуваності сайту чи додатку, коли поточні налаштування не дозволяють витримувати збільшуючийся трафік.

  • Поява затримок і падіння відзивчивості сервісів при одночасній роботі великої кількості користувачів.

  • Виявлення «вузьких місць» в роботі бази даних, повільних SQL-запитів, надмірного завантаження CPU або дискової підсистеми.

  • Підготовка інфраструктури до масштабування та зростання обсягів даних.

  • Необхідність підвищення стійкості та надійності сервісів, мінімізація простоїв і помилок при пікових навантаженнях.


Переваги оптимізації

Проведена оптимізація дає комплексний ефект, зокрема:

  • Значне збільшення пропускної здатності сервера.

  • Зниження часу відгуку та затримок при обробці запитів.

  • Підвищення стійкості до високих навантажень і пікових ситуацій.

  • Покращення аналітики і моніторингу за рахунок детального логування.

  • Підвищення продуктивності PHP-скриптів та бази даних.

  • Підготовка інфраструктури до росту користувачів та обсягів даних.

  • Зниження ризику блокувань таблиць і помилок при паралельній роботі.

Реальний приклад: оптимізація Nginx, PHP-FPM та MariaDB

Нижче наведено звіт про виконані роботи з оптимізації серверних компонентів, виконаний 18.07.2025.

В рамках підготовки проекту до майбутнього зростання відвідуваності та підвищення вимог до стабільності були проведені роботи з оптимізації основних сервісів: Nginx, PHP-FPM та MariaDB.

1. Оптимізація Nginx

Виконано:

  • Збільшено обмеження відкритих файлів (worker_rlimit_nofile 100000), що дозволяє обробляти більшу кількість одночасних з’єднань і файлових дескрипторів.

  • Налаштовані робочі процеси для високої паралельності:

    • worker_connections 8192

    • Використання epoll, multi_accept, accept_mutex.

  • Оптимізована буферизація FastCGI:

    • Збільшені розміри буферів для важких PHP-скриптів.

    • Тимчасові файли FastCGI винесені в /dev/shm для прискорення операцій вводу-виводу.

  • Оновлені налаштування real_ip для коректної роботи з CDN (Cloudflare та ін.).

  • Впроваджено кастомний формат логування з виводом часу обробки запитів.

Очікуваний ефект:

  • Підвищення пропускної здатності та стійкості до навантажень.

  • Мінімізація затримок при великій кількості одночасних користувачів.

  • Підвищена точність аналітики для моніторингу та подальших покращень.

2. Оптимізація PHP-FPM

Виконано:

  • Максимально задіяний механізм OpCache (виділено 1 ГБ пам’яті, збільшена кількість файлів, застосовані агресивні оптимізації).

  • Винесені lockfile_path та кеш OpCache у пам’ять (/dev/shm) для прискорення операцій.

  • Увімкнена підтримка CLI в OpCache для пришвидшення фонових задач.

Очікуваний ефект:

  • Значне скорочення часу виконання PHP-скриптів.

  • Готовність до масштабування завдяки ефективному використанню OpCache при зростанні кількості і обсягів скриптів.

3. Оптимізація MariaDB 11.4

Виконано:

  • Збільшені параметри для одночасних з’єднань, файлів і буферів — важливий фактор при роботі великої кількості користувачів.

  • Значно збільшені параметри роботи InnoDB та кешування, включно з buffer_pool (10 ГБ), розміром логів, thread concurrency.

  • Тимчасові і лог-файли винесені у /dev/shm для прискорення операцій.

  • Увімкнений performance_schema для подальшого профілювання.

  • Оптимізовані параметри таймаутів і буферів під високі навантаження.

  • Увімкнений query_cache і збільшено його обсяг для прискорення часто повторюваних SELECT-запитів.

  • Налаштований режим ізоляції транзакцій (READ-COMMITTED), що підвищує надійність даних.

  • Переглянуті параметри очищення та партиціювання логів.

  • Проіндексовані ключові таблиці.

Очікуваний ефект:

  • Помітне прискорення обробки складних і паралельних запитів.

  • Готовність бази даних до різкого зростання навантаження як за кількістю користувачів, так і за обсягом даних.

  • Зниження ризику блокувань таблиць і покращення відзивчивості при пікових навантаженнях.

4. Оптимізація структури бази даних

Виконано:

  • Виписані та проаналізовані повільні запити (slow query log).

  • Додані прості та складні індекси в таблиці: media, groups, locations, itineraries, location_tour, departures, reviews, service_descriptions, tour_type, tours.

  • Покращена структура бази даних для прискорення вибірок і зниження навантаження на CPU та дискову підсистему.

Очікуваний ефект:

  • Значне скорочення часу відгуку на ключові користувацькі запити.

  • Підвищення продуктивності складних вибірок і звітів.

  • Закладення фундаменту для подальшого розширення бази без втрати продуктивності.

5. Приклади повільних запитів, які були оптимізовані

  1. Запит вибірки турів з урахуванням відгуків, фільтрів і наявності місць.

  2. Запит груп з фільтрацією та зв’язками з типами турів.

  3. Пошук локації за слагом з JSON-обробкою.

  4. Вибірка доступних відправлень турів у певний період.

  5. Інші складні SELECT-запити з множинними умовами і з’єднаннями.

Оптимізація саме таких запитів дозволила значно прискорити роботу сайту та знизити навантаження на сервер.

Підсумки

Оптимізація серверних компонентів — це комплексний і необхідний процес, що забезпечує:

  • Швидку та стабільну роботу ваших веб-сервісів.

  • Готовність до зростання навантаження і кількості користувачів.

  • Ефективне використання ресурсів сервера та бази даних.

  • Високу якість обслуговування клієнтів за рахунок зниження часу відгуку.

Замовте оптимізацію серверів у професіоналів!

Якщо ви хочете забезпечити своєму проєкту максимальну продуктивність, стійкість і стабільність роботи — замовте професійну оптимізацію серверних компонентів у нас!

Ми пропонуємо:

  • Комплексний аудит та налаштування всіх ключових сервісів.

  • Глибокий аналіз і оптимізацію бази даних та запитів.

  • Індивідуальні рішення під особливості вашого проєкту.

  • Підтримку і супровід після оптимізації.

Зв’яжіться з нами вже сьогодні, щоб ваш сервер працював швидко та без збоїв, навіть при високому навантаженні!