2017-05-11 71 views
0

我有以下问题。Innodb崩溃,直到服务器重启才启动mysql

我有一个安装了LAMP的AWS EC2 t2.micro实例。

我的WebApp使用InnoDB表。如果有很多用户,InnoDB会因缓冲池大小而崩溃。它说它不能分配足够的内存。

170511 10时32分05秒的InnoDB:初始化缓冲池,大小= 128.0M

InnoDB的:MMAP(137363456个字节)失败;错误号12

我已经把innodb_buffer_pool_size到750M(如果我把它更多的1GB - MySQL不启动的话)。我已经在LoadImpact下对我的WebApp进行了压力测试。从30人起,WebApp试图分配800M之类的东西,并再次崩溃MySQL。

170511 12时16分04秒的InnoDB:初始化缓冲池,大小= 752.0M

InnoDB的:MMAP(807010304个字节)失败;错误号12

另一个问题是,我不能只运行sudo的服务mysql的启动重启 mysql的崩溃之后。它说工作没有开始。

  1. 如何让我的服务器更稳定。我应该使用什么选项。
  2. 如何防止这种“碰撞”行为。我的意思是我可以做一些使服务器和MySQL的工作不会变乱但冻结或类似的东西。我不想做的每一个有很多人的网站
+0

MySQL是**没有**崩溃。它被Apache杀死,然后拒绝它所需的资源,以便重新启动。 https://dba.stackexchange.com/a/25083/11651 –

回答

0

t2.micro实例只有512M RAM的时间须藤reboo。如果你在同一个盒子上运行MySQL和Apache,你应该谨慎地分配内存。

它看起来像Apache进程使用所有的内存,所以MySQL得到最低限度的必要。

如果您还没有添加,我建议先从添加交换开始。

dd if=/dev/zero of=/swapfile bs=1024 count=65536 
chmod 0600 /swapfile 
mkswap /swapfile 
swapon /swapfile 

并将其添加到/etc/fstab

/swapfile   swap   swap defaults  0 0 

接下来,限制Apache工作人员以确保MySQL始终获得innodb_buffer_pool_size。取决于你使用什么 - prefork或工作人员配置会有所不同,但你有一个想法。

相关问题