我希望你能帮助我。我不能忍受继续在亚马逊上重启我的ec2实例。
我在那里托管了两个wordpress网站。我的网站一直运作良好,直到两个月前,其中一个开始遇到这个问题。我尝试了各种方法,唯一的解决方案是重新配置。
现在两人都是对的。第二个网站开始出现同样的问题。我认为亚马逊正在让我感到烦恼。
我正在使用免费的微实例。如果有人知道问题所在,请帮助我!
答案 0 :(得分:3)
您的问题将是分配给EC2中的T1 Micro实例的有限内存。我假设你在这种情况下使用的是ANI Linux,如果使用的是Linux的替代版本,那么你的日志和配置文件可能有不同的位置。
确保您是root用户。
在以下位置查看您的MySQL日志:
/var/log/mysqld.log
如果您看到以下重复的实例,则可以肯定的是,分配给微实例的0.6GB内存并没有削减它。
150714 22:13:33 InnoDB: Initializing buffer pool, size = 12.0M
InnoDB: mmap(12877824 bytes) failed; errno 12
150714 22:13:33 InnoDB: Completed initialization of buffer pool
150714 22:13:33 InnoDB: Fatal error: cannot allocate memory for the buffer pool
150714 22:13:33 [ERROR] Plugin 'InnoDB' init function returned error.
150714 22:13:33 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
150714 22:13:33 [ERROR] Unknown/unsupported storage engine: InnoDB
150714 22:13:33 [ERROR] Aborting
您将在上面的日志摘录中注意到我的缓冲池大小设置为12MB。这可以通过将行innodb_buffer_pool_size = 12M
添加到MySQL配置文件/etc/my.cnf
来配置。
处理InnoDB咀嚼内存的一个很好的方法是创建一个交换文件。 首先检查你的记忆状态:
free -m
你很可能会发现你的交换没有做太多的事情:
total used free shared buffers cached
Mem: 592 574 17 0 15 235
-/+ buffers/cache: 323 268
Swap: 0 0 0
要开始,请确保以root用户身份登录并运行以下命令:
dd if=/dev/zero of=/swapfile bs=1M count=1024
请稍等一下,因为命令不是详细的,但是当过程完成后大约15秒后你会看到以下响应:
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 31.505 s, 34.1 MB/s
接下来用以下方式设置交换空间:
mkswap /swapfile
现在设置交换事件:
swapon /swapfile
如果您收到权限响应,则可以通过使用600
命令将权限更改为chmod
来忽略它或解决交换文件。
chmod 600 /swapfile
现在将以下行添加到/etc/fstab
以在服务器启动时创建交换空间:
/swapfile swap swap defaults 0 0
重启MySQL实例:
service mysqld restart
最后检查您的交换文件是否与free -m
命令一起正常工作。
你应该看到类似的东西:
total used free shared buffers cached
Mem: 592 575 16 0 16 235
-/+ buffers/cache: 323 269
Swap: 1023 0 1023
希望这有帮助。