当系统内存不足时,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 工作线程或其他客户端接受的连接数量。您的网络应用程序可能会处理工作线程需要等待连接的情况。看这里。http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_connections
您使用的是 EC2 微型实例吗?您需要进行一些认真的调整。看这里:http://ubuntuforums.org/showthread.php?t=1979049
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)