Я проделал довольно много чтения, прежде чем спрашивать об этом, поэтому позвольте мне предисловие, сказав, что у меня не хватает связей, памяти или процессора, и из что я могу сказать, у меня тоже не заканчиваются дескрипторы файлов.Ошибки подключения PHP/MYSQL при большой нагрузке через mysql.sock
Вот что PHP бросает на меня, когда MySQL находится под большой нагрузкой:
Не удается подключиться к локальному серверу MySQL через гнездо «/var/lib/mysql/mysql.sock» (11 «Ресурс временно unavailable ")
Это происходит случайно при загрузке - но чем больше я нажимаю, тем чаще php бросает это на меня. Хотя это происходит, я всегда могу подключаться локально через консоль и от PHP до 127.0.0.1 вместо «localhost», который использует более быстрый сокет unix.
Вот несколько системных переменных, чтобы отсеять обычные проблемы:
cat /proc/sys/fs/file-max = 4895952
lsof | wc -l = 215778 (during "outages")
Высокая использование доступных соединений: 26% (261/1000)
InnoDB размер буферного пула/данные: 10,0 г/3.7g (много о номере)
- мягкий nofile 999999
- жесткий nofile 999999
Я на самом деле работает MariaDB (версия сервера: 10.0.17-MariaDB MariaDB Server)
Эти результаты генерируются как при нормальной нагрузке, и запустив mysqlslap в нерабочее время, так что медленные запросы не являются проблема - просто высокие соединения.
Любые советы? Я могу сообщить дополнительные настройки/данные, если это необходимо - mysqltuner.pl говорит, что все в порядке
и еще раз, показательная вещь здесь заключается в том, что подключение через IP работает очень хорошо и быстро во время этих сбоев - я просто не могу выяснить почему.
Edit: вот мой my.ini (некоторые значения могут показаться немного высокой из моих последних изменений по устранению неполадок, и, пожалуйста, имейте в виду, что нет никаких ошибок в журналах MySQL, системные журналы, или dmesg)
socket=/var/lib/mysql/mysql.sock
skip-external-locking
skip-name-resolve
table_open_cache=8092
thread_cache_size=16
back_log=3000
max_connect_errors=10000
interactive_timeout=3600
wait_timeout=600
max_connections=1000
max_allowed_packet=16M
tmp_table_size=64M
max_heap_table_size=64M
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=8M
join_buffer_size=1M
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_buffer_pool_size=10G
[mysql.server]
user=mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
open-files-limit=65535
Что ваш диск I/O, как? если ваше узкое место не попало в память, процессор или соединения, скорее всего, это связано с дисковым вводом/выводом при загрузке, не поддерживаемым .sock. Вы пытались не использовать сокет? – user3036342
В моем абсолютном худшем случае все еще было 0% iowait (и html-страницы работают хорошо и быстро, консоль быстрая и т. Д., А не проблема с IO-диском) - я могу попробовать не использовать локальный сокет, но это просто порождает проблемы сети вводя кучу, больше загружает стек TCP уже загруженного сервера. Я бы предпочел остаться с более быстрым и рекомендуемым методом локальных сокетов. –
Его возможная ошибка. Попробуйте изменить свою версию. –