当EC2微实例上的ubuntu在内存不足时将其杀死时,自动重启Mysql

前端之家收集整理的这篇文章主要介绍了当EC2微实例上的ubuntu在内存不足时将其杀死时,自动重启Mysql前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当系统内存不足时,ubuntu 12.04会终止mysql进程:

Out of memory: Kill process 17074 (MysqLd) score 146 or sacrifice child

所以这个过程最终被杀死了.
这发生在服务器负载的高峰期,主要是因为apache变得疯狂并且吃剩余的可用内存.可能的方法可能是:

>以某种方式改变MysqL的优先级,所以它没有被杀死(可能是一个糟糕的修复,因为其他东西将被杀死)
>监视MysqL的状态,并在它被杀死时自动重启(我正在思考的那个,但不知道该怎么做).

你怎么看?

最佳答案
突然终止数据库服务器是一个非常严重的崩溃.您需要在生产系统中避免这种情况,因为它可能无法干净地重新启动.

数据库服务器是一个共享资源,几乎不应该在生产中以非计划的方式终止.应该导致意外终止的唯一因素是灾难性的硬件或电源故障.大多数配置正确的生产数据库服务器每十年或更少一次具有计划外终止.认真.

该怎么办?

修复您的apache配置.限制它可以使用的工作线程和进程的数量,因此它无法运行.学习如何做到这一点.这至关重要.见:http://httpd.apache.org/docs/current/mod/mpm_common.html#maxrequestworkers

修复您的Web应用中导致您的Apache疯狂运行的缺陷.

如果可以的话,将MysqLd服务器从apache移到另一台服务器上,这样两者就不会争用相同的硬件资源.

配置MysqLd以限制它将从apache工作线程或其他客户端接受的连接数.您的Web应用程序可能会处理工作线程需要等待连接的情况.看这里. http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_connections

你是EC2微型实例吗?你需要做一些认真的调整.见:http://ubuntuforums.org/showthread.php?t=1979049

猜你在找的MySQL相关文章