'PDO 连接错误:SQLSTATE[HY000] [2002] 无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地 MySQL 服务器

'PDO 连接错误:SQLSTATE[HY000] [2002] 无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地 MySQL 服务器

我越来越

'PDO 连接错误:SQLSTATE[HY000] [2002] 无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地 MySQL 服务器

当我尝试进行过多更新和插入时,会出现错误。更新过多,我的意思是每分钟 20k-30k 个事务。例如,当我尝试批量处理表中超过 10k 条记录时,我开始收到此错误。

我在 serverfault 和 MySQL 参考文档中搜索,发现无效的 sock 文件位置或关闭的 mysql 服务器可能会导致此错误,但我的 sock 文件路径是正确的,mysql 服务器已启动。因为正常情况下,我可以连接到 mysql 并运行查询。

连接限制会导致此错误吗?我当前的 max_connections 变量值为 151,这对于每分钟 10k 个事务来说可能不够。但据我所知,当打开太多到 mysql 的连接时,它会给出太多连接错误,而不是无法通过套接字连接的错误。

我已经将应用程序改为使用 mysql_pconnect 而不是 mysql_connect。我不知道当我尝试运行 cron 作业来处理 10k 条记录时会发生什么。

您有什么想法吗?如果我找不到此问题的答案,我将尝试为 MySQL 配备一台具有 32 GB RAM、4-8 个处理器的大型机器,并尝试此设置。

答案1

当这种情况发生时,您的系统是否显示出任何缓慢或滞后的迹象?如果是这样,更强大的机器会有所帮助。如果没有,那么可能有一些默认保护措施可以防止请求风暴。

请参阅此错误以了解更多信息:

http://bugs.mysql.com/bug.php?id=10525

重要的是,通过设置提高 mysql 对“积压日志”请求进行排队的能力

后台日志=1000

在您的 /etc/mysql/my.cnf 文件的 [mysqld] 部分下(并重新启动 mysql)。

其次,在linux下也提高同样的限制:

sudo sysctl -w net.core.somaxconn=1024

不要忘记编辑 /etc/sysctl.conf 并添加

net.core.somaxconn=1024

如果这解决了您的问题,则请继续,否则它将在下次重启时恢复!

答案2

这可能是 SQL 处理本地主机环回时出现的问题。请尝试改为连接到 127.0.0.1 或服务器的内部 IP。

相关内容