Улучшить работу высоконагруженных серверов можно:

Установка лимита открытых файлов

Для установки лимита открытых файлов необходимо:

  1. Проверить текущий лимит командой:

    ulimit -a

    Результат выполнения команды будет выведен на консоль.
    По умолчанию лимит открытых файлов составляет 1024:

    Данного лимита недостаточно для нормальной работы высоконагруженных серверов.

    Рекомендуется устанавливать лимит не меньше 65536.


  2. Установить лимит открытых файлов одним из способов:

  3. Актуализировать конфигурационный файл каждого высоконагруженного сервиса. Для этого необходимо:
    1. Создать файл /etc/systemd/system/НАЗВАНИЕ_СЕРВИСА.service.d/limit.conf и добавить в него следующую информацию:

      [Service]
      LimitNOFILE=количество_открытых_файлов_на_сервис


    2. Перезапустить demon-reload командой:

      systemctl daemon-reload


    3. Перезапустить сервис командой:

      systemctl restart service


Установка максимального лимита подключений к БД MySQL

Для установки максимального лимита подключений к БД MySQL необходимо:

  1. Проверить текущее значение командой в консоли MySQL:

    show variables like "max_connections"

    Результат выполнения команды будет выведен на консоль.
    По умолчанию максимальный лимит подключений к БД MySQL составляет 151:

    Данного лимита недостаточно для высоконагруженных серверов, из-за чего может возникать ошибка «too many connections».

    Рекомендуется устанавливать лимит не меньше 400.


  2. Установить лимит подключений, добавив файл /etc/mysql/mysql.conf.d/mysqld.cnf в секцию [mysqld] значение:

    max_connections = 400


  3. Для вступления изменений в силу необходимо перезапустить сервер MySQL.

Установка размера буфера для InnoDB в MySQL

Для установки размера буфера для InnoDB в MySQL необходимо:

  1. Оценить эффективность работы буфера командой в консоли MySQL:

    show engine InnoDB status\G

    Результат выполнения команды будет выведен на консоль в виде значений параметра "Buffer pool hit rate":

    Первое значение должно быть не меньше 1000. В данном случае размера буфера для работы MySQL достаточно.
    Если первое значение меньше 1000 (например "995/1000" или "990/1000"), то это означает, что не все операции чтения работают с буфером, и MySQL получает часть данных через операцию чтения из файла.

    В таком случае рекомендуется увеличить буфер до 60-70% от ОЗУ.


  2. Установить размер буфера MySQL, добавив в конец файла /etc/mysql/mysql.conf.d/mysqld.cnf параметр с необходимым значением. Например:

    innodb_buffer_pool_size = 15GB


  3. Для вступления изменений в силу необходимо перезапустить сервер MySQL.