调试在极端负载下建立mySQL数据库连接时出错

问题描述:

在高流量下,我的mysql 5.0.45服务器/ Apache2/CentOS 5出现“建立mySQL数据库连接时出错”。我需要找到根本原因。我会非常感谢任何有关我应该采取的程序,以找到原因(内存限制,线程限制,CPU负载,慢查询等,大型数据集,错误的键......)的信息指针,我会假设它涉及看相关的日志文件等......调试在极端负载下建立mySQL数据库连接时出错

谢谢。

该特定的错误消息听起来像是由应用程序生成的,而不是由系统库生成的。 MySQL具有报告正在发生的具体错误的功能,所以你最好的选择是以某种方式利用它。例如,如果您使用的是PHP,则会有一个称为mysql_error()的函数返回有关遇到的最后一个错误(连接数过多等)的详细信息。你会在你的连接调用附近进行一些错误处理,并且如果失败,则记录下mysql_error()结果。

您没有提及您使用的是哪种语言,但是MySQL库会提供相同的功能,无论您使用何种语言。我建议修改你的应用程序代码以利用它。

+0

谢谢! 我使用PHP5和名为ezsql的库http://www.woyano.com/jv/ezsql我会尝试根据您的建议输出mysql错误(偶尔会发生错误)。是不是有一个日志,MySQL保持这样的错误? – Nir 2009-06-18 17:08:48

+0

我得到“无法创建新线程(errno 12);如果您的内存不足,可以查阅手册以获取可能的操作系统相关错误”约70%的错误和“无法创建UNIX套接字(12)“大约25%,偶尔”在读取初始通信包时丢失与MySQL服务器的连接“。 它似乎不是一个内存问题,因为'顶部'命令显示600M免费(这类似于低流量的情况) – Nir 2009-06-18 17:57:39

我敢打赌,这是因为你正在达到mysql服务器允许的最大用户限制,但一般情况下,如果不是屏幕,但至少要打印mysql错误,至少要打印日志或电子邮件。