@fwervbyberstvrstrf

Падает сервер Mysql при нагрузке. Как настроить my.conf?

У меня есть бот в ВК. Каждую секунду он обрабатывает несколько десятков запросов (вроде не так много).
Есть ещё тестовый паблик для того же бота с тем же кодом, который в принципе прижился на новом VDS (его нагружаю один я).
Проблема: при подключении сервера к нагруженному боту (который не тестовый а рабочий), через несколько секунд сбрасывается Mysql соединение, в phpmyadmin не войти ну и в Панели управления появляется кнопка запуска Mysql.
Я пытался погулить настройки, но авторы объясняют не совсем понятно к тому же сайты бывают разные.

Как решить проблему? Как настроить my.conf (если проблема зависит только от него)?

Вот мой my.conf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

skip-external-locking
query_cache_size = 32M
table_open_cache = 4096
thread_cache_size = 32
max_heap_table_size	= 64M
tmp_table_size = 64M
innodb_buffer_pool_size	= 32M
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 64M
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTED
default-storage-engine = innodb
bind-address = 0.0.0.0
key_buffer = 16M
max_allowed_packet = 100M
thread_stack = 128K
myisam-recover = BACKUP
expire_logs_days = 1
max_binlog_size = 50M
join_buffer_size = 4M
sort_buffer_size = 4M

#innodb_use_native_aio = 0
innodb_file_per_table
sql_mode = ''
performance_schema	= OFF

max_connections=1000
max_user_connections=1000
wait_timeout=600
interactive_timeout=300
long_query_time=5

#slow_query_log=1
#slow_query_log_file=/var/log/mysql-slow-queries.log



[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d


Хар-ка сервера:
5c6c067c4a723495629566.png
  • Вопрос задан
  • 472 просмотра
Пригласить эксперта
Ответы на вопрос 2
@neol
max_connections=1000
join_buffer_size = 4M
sort_buffer_size = 4M

Эти буферы выделяются на каждое соединение, соответственно вам под этот конфиг нужно больше 8 Гб памяти.
Посчитать можете онлайн тут или в консоли через mysqltuner.
max_connections вам надо уменьшать однозначно.
Ответ написан
Комментировать
kotomyava
@kotomyava
Системный администратор
Ваш конфиг очень не соответствует вашим ресурсам.

thread_cache_size = 32
вам пары хватит.
max_heap_table_size = 64M
tmp_table_size = 64M
Не при 512МБ на всё. 16 максимум, и оптимизируйте нормально запросы.
query_cache_size = 32M
Выключить вообще.
bind-address = 0.0.0.0
Вам нужны внешние подключения? Если нет, надо 127.0.0.1, если да, обязательно закрыть всё кроме нужных адресов на 3306 фаерволом.
max_allowed_packet = 100M
Вам не нужно столько наверняка.
max_connections=1000
Вы можете пару-тройку обслуживать не 1000 на такой виртуалке. 10 тут будет даже много, не то, что 1000.

Панель снести, она вам не нужна.
Все лишние сервисы на виртуалке изничтожить.
Также, вероятно, у вас тут же веб сервер, который тоже надо правильно настроить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы