我们有一个网络应用程序(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之前,我想知道在两台服务器之间是否还有其他任何东西要比较......看看备份是如何正常工作的。在我们不考虑的地方必定存在差异。
任何建议都将不胜感激。
答案 0 :(得分:1)
我创建了一个脚本来模拟备份服务器上的负载,然后能够重新创建内存不足错误消息。 最后,我将“join_buffer_size”设置添加到my.cnf并设置为3 MB。这解决了这个问题。
PS。我下载并运行了tuning-primer.sh以及mysqltuner.pl来缩小问题范围。