来自mysql的内存不足错误

时间:2014-03-05 16:17:05

标签: mysql linux out-of-memory

我们有一个网络应用程序(racktables)让我们对我们的生产箱感到悲伤。每当用户尝试运行搜索时,都会出现以下错误:

Pdo exception: PDOException

SQLSTATE[HY000]: General error: 5 Out of memory (Needed 2057328 bytes) (HY000)

我无法在备份服务器上重新创建该问题。服务器匹配除了生产中我们有16GB RAM而我们的备份我们有8GB。这是一个有争议的问题,因为两者都运行32位操作系统,所以只使用4GB的RAM。我们还设置了交换分区......

这是我从生产中的“free -m”命令中得到的回复:

prod:/etc# free -m
             total         used         free       shared      buffers
Mem:          3294         1958         1335            0          118
-/+ buffers:               1839         1454
Swap:         3817          109         3707
prod:/etc# 

我已经检查过以确保两个盒子上的my.cnf匹配。生产中的数据库被复制到备份服务器上......所以数据也匹配。

我想我们的选择是:

A) convert the o/s to 64 bit so we can use more RAM. 
B) start tweaking some of the innodb settings in my.cnf. 

但在我尝试A或B之前,我想知道在两台服务器之间是否还有其他任何东西要比较......看看备份是如何正常工作的。在我们不考虑的地方必定存在差异。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我创建了一个脚本来模拟备份服务器上的负载,然后能够重新创建内存不足错误消息。 最后,我将“join_buffer_size”设置添加到my.cnf并设置为3 MB。这解决了这个问题。

PS。我下载并运行了tuning-primer.sh以及mysqltuner.pl来缩小问题范围。