Перейти до змісту

Оптимізація конфігурації системи за високого навантаження

Для забезпечення стабільної та ефективної роботи системи за значного навантаження (наприклад, понад 1000 одиниць обладнання або 50 000 інтерфейсів/ONU) важливо правильно налаштувати конфігурацію.
Нижче наведено рекомендації та параметри, які допоможуть оптимізувати продуктивність.

Під час роботи з великою кількістю обладнання або інтерфейсів обов'язковим є використання SSD або NVMe накопичувачів. Це значно прискорить операції введення-виведення, які є вузьким місцем під час обробки великих обсягів даних та частих запитів до бази даних.

Усі нищезазначені параметри конфігурації вказуються у файлі /opt/wildcore-dms/.env. Якщо якийсь параметр відсутній у цьому файлі, його можна створити, додавши відповідний рядок.

Параметри вказуються як КЛЮЧ=ЗНАЧЕННЯ

1. Оптимізація конфігурації MySQL

Виділення достатнього обсягу пам'яті для MySQL є ключовим фактором для продуктивності бази даних, особливо при інтенсивних операціях читання/запису.

  • MYSQL_INNODB_BUFFER_POOL_SIZE: Визначає розмір буферного пулу InnoDB. У цьому пулі кешуються дані та індекси таблиці InnoDB. Збільшення цього значення дозволяє MySQL зберігати більше даних у пам'яті, знижуючи необхідність у частих зверненнях до диска.
    • Рекомендоване значення: 4G (4 Гігабайти) для початку.
  • MYSQL_KEY_BUFFER_SIZE: Використовується для кешування індексів таблиць MyISAM. Якщо ви використовуєте здебільшого таблиці InnoDB, це значення може бути меншим, але все одно важливе для деяких внутрішніх операцій.
    • Рекомендоване значення: 256M (256 Мегабайт).
  • MYSQL_TABLE_OPEN_CACHE: Кількість таблиць, які сервер може тримати відкритими. Збільшення цього значення зменшує кількість операцій відкриття/закриття таблиць, що корисно при великій кількості одночасних запитів.
    • Рекомендоване значення: 500.

2. Збільшення часу життя кешів

Кешування даних допомагає знизити навантаження на базу даних та обладнання, надаючи часто запитувані дані з пам'яті.

  • MEMCACHE_CACHING_QUERY_TIMEOUT_SEC: Час життя кешу записів з бази даних та результатів опитування обладнання. Збільшення цього значення дозволяє довше зберігати дані в кеші.
    • Рекомендоване значення: 9000 секунд (2.5 години).
  • SWC_CACHE_ACTUALIZE_TIMEOUT_SEC: Інтервал, через який дані з кешу мають бути актуалізовані з обладнання. Це значення визначає, як часто система звертатиметься до обладнання для отримання свіжих даних, замість використання кешованих.
    • Рекомендоване значення: 3600 секунд (1 година).

3. Збільшення кількості обробників

Для ефективної обробки великої кількості одночасних запитів та завдань необхідно збільшити кількість HTTP-обробників та фонових опитувачів.

  • RR_NUM_WORKERS: Кількість HTTP-обробників. Ці обробники відповідають за обробку вхідних HTTP-запитів до системи.
    • Рекомендоване значення: 120.
  • POLLER_COUNT_PROCS: Кількість фонових опитувачів. Ці процеси відповідають за опитування обладнання та збір даних.
    • Рекомендоване значення: 30.

4. Застосування змін

Усі вищезазначені зміни конфігурації вимагають перестворення контейнерів Docker.

Для застосування змін виконайте такі команди в директорії /opt/wildcore-dms:

cd /opt/wildcore-dms
docker compose up -d --force-recreate


6. Важливі зауваження та рекомендації щодо тюнінгу

  • Імперативний підбір параметрів: Не існує універсальних "золотих" значень для всіх параметрів. Оптимальні значення сильно залежать від:
    • Типу обладнання: Різні типи обладнання можуть генерувати різний обсяг даних та вимагати різну частоту опитування.
    • Характеристик сервера: Обсяг оперативної пам'яті (RAM) та кількість ядер CPU вашого сервера є критично важливими факторами. Чим більше ресурсів, тим вищими можуть бути значення параметрів.
  • Моніторинг та ітеративний підхід: Рекомендується впроваджувати зміни поступово та постійно моніторити продуктивність системи (використання CPU, RAM, дискові операції, затримки запитів). Це дозволить вам емпірично підібрати оптимальні значення для вашого конкретного середовища. Почніть із запропонованих значень і коригуйте їх вгору або вниз залежно від результатів моніторингу.
  • Відсутність фіксованих рекомендацій для 10k інтерфейсів: Через високу варіативність навантаження, типів обладнання та серверних ресурсів, дати точні рекомендації, наприклад, для 10 000 інтерфейсів, неможливо без детального аналізу вашої системи. Підхід "підбирати імперативним способом" є найефективнішим.