я собираюсь
'Ошибка подключения PDO: SQLSTATE [HY000] [2002] Не удается подключиться к локальному серверу MySQL через сокет' /var/run/mysqld/mysqld.sock '
ошибка при попытке сделать слишком много обновлений и вставок. При слишком большом количестве обновлений я имею в виду 20-30 тысяч транзакций в минуту. Например, когда я пытаюсь выполнить пакетную обработку более 10 тыс. Записей в таблице, я начинаю получать эту ошибку.
Я поискал в справочной документации по serverfault и MySQL и обнаружил, что неправильное расположение файла sock или неработающий сервер mysql могут вызвать эту ошибку, но мой путь к файлам sock верен и сервер mysql работает. Потому что обычно я могу подключиться к mysql и выполнить запрос.
Может ли ограничение подключения вызвать эту ошибку? Мое текущее значение переменной max_connections - 151, и этого может быть недостаточно для 10 тысяч транзакций в минуту. Но, как я знаю, когда слишком много соединений открывается с mysql, это дает слишком много ошибок соединений, а не может подключиться через ошибку сокета.
Я изменил свое приложение на использование mysql_pconnect вместо mysql_connect. Я не знаю, что произойдет, когда я попытаюсь запустить задание cron для обработки 10 тысяч записей.
Есть ли у вас какие-либо идеи? Если я не смогу найти ответ на эту проблему, я попытаюсь получить большую машину для MySQL с оперативной памятью 32 ГБ, 4-8 процессорами и попробовать эту настройку.
Показывает ли ваша система какие-либо признаки замедления или задержки, когда это происходит? В таком случае вам поможет более мощная машина. Если нет, то, вероятно, существуют какие-то меры безопасности по умолчанию, предотвращающие бурю запросов.
См. Эту ошибку для получения дополнительной информации:
http://bugs.mysql.com/bug.php?id=10525
Важно отметить, что повысите способность mysql ставить в очередь запросы на «задний журнал», задав
back_log = 1000
в вашем файле /etc/mysql/my.cnf в разделе [mysqld] (и перезапустив mysql).
Во-вторых, также увеличьте такой же лимит в Linux:
sudo sysctl -w net.core.somaxconn=1024
Не забудьте отредактировать /etc/sysctl.conf и добавить
net.core.somaxconn=1024
Вниз, если это решит вашу проблему, иначе она вернется при следующей перезагрузке!
Это может быть проблема с обработкой SQL-запросом обратной связи localhost. Попробуйте вместо этого подключиться к 127.0.0.1 или внутреннему IP-адресу сервера.