Mysql начинает сбрасывать соединение в часы пик

Наша база данных начинает терять соединение в часы пик. Около 3% соединений обрывается, и mysql возвращает сообщение «mysqli::mysqli(): (HY000/2003): не удается подключиться к серверу MySQL на «10.88.***» (99)». Я настроил несколько параметров mysql и ядра, но это не помогает: --/etc/sysctl.conf:

net.ipv4.tcp_max_tw_buckets = 524288 net.core.somaxconn = 2048 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog=30000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_synack_retries = 2

-/etc/my.cnf:

open_files_limit = 65536 max_connections=3600
connect_timeout=60
wait_timeout=2400
back_log=4096

-/etc/security/limits.conf

mysql soft nofile 65536 mysql hard nofile 65536 mysql soft nproc 65536 mysql hard nproc 65536

Наша база данных обрабатывает> 40000 запросов и> 8000 подключений в секунду на одной машине базы данных, без сегментирования и пула подключений. Что мне не хватает? Кто-нибудь знает, что может вызвать это узкое место? Спасибо.

Вот содержимое my.cnf:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

skip_name_resolve = off
open_files_limit = 65536

max_allowed_packet = 1073741824
expire_logs_days = 2

binlog_format = row
innodb_file_per_table = 1
innodb_flush_method=O_DIRECT

innodb_buffer_pool_instances = 16
innodb_buffer_pool_size = 43G
innodb_thread_concurrency = 0

log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
slave-skip-errors = 1062,1032

max_connections=3600
connect_timeout=60
wait_timeout=2400

back_log=4096

thread_cache_size=48

symbolic-links=0

user=mysql

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
!includedir /etc/my.cnf.d

person Chris    schedule 03.08.2015    source источник
comment
Очевидный вопрос, который нужно задать: сколько сеансов у вас открыто, когда начинают происходить падения?   -  person Tim Biegeleisen    schedule 03.08.2015
comment
3600 подключений? что такое оперативная память вашего сервера ... если вы поделитесь всеми параметрами вашего файла конфигурации mysql, тогда вы можете получить некоторую подсказку ...   -  person Zafar Malik    schedule 03.08.2015
comment
У нас есть 64 ГБ оперативной памяти на сервере базы данных. Я не уверен, сколько сеансов, когда возникает проблема   -  person Chris    schedule 03.08.2015
comment
@ZafarMalik не имеет большого значения. Оперативная память в наши дни достаточно дешева   -  person M0rtiis    schedule 03.08.2015
comment
вам не следует увеличивать max_connections, так как он потребляет ресурсы сервера на одно соединение, но вы должны проверить, переходят ли соединения в спящий режим на вашем сервере. Кроме того, соединения правильно используются вашим приложением... время ожидания слишком велико, вы должны уменьшить его до 120 или 240, если нет особой причины.   -  person Zafar Malik    schedule 03.08.2015


Ответы (1)


Итак .. попробуйте увеличить max_connections до> 8000?

в моем .cnf

max_connections=9000

person Community    schedule 03.08.2015
comment
Спасибо за ответ. один вопрос: у нас есть › 4000 подключений в непиковые часы, что уже превышает максимальное подключение, которое я установил, но почему mysql не выдает ошибку? - person Chris; 03.08.2015
comment
я полагаю, вы не используете постоянные соединения? пхп? - person ; 03.08.2015
comment
мы используем php mysqli, но не используем постоянное соединение - person Chris; 03.08.2015