当仍有大量内存时,OOMK 会杀死 mysql 和 apache

当仍有大量内存时,OOMK 会杀死 mysql 和 apache

可能重复:
避免 Linux 内存不足导致应用程序崩溃

首先我要说的是,我对 ti *nix 系统还不是很熟悉,对服务器管理更是一窍不通。无论如何,我遇到了一个小问题。我有一个 1GB 内存的 VPS,系统是 Debian 6。我有几个网站在上面运行,尽管有些负载只能由其中一个网站引起。最近,OOMK 开始杀死 mysql,导致 wp 和 phpbb 给出无法连接到 mysql 服务器的错误。错误本身并不好,尤其是如果它发生在晚上,网站将无法使用,直到我醒来并重新启动 mysql。我的 cron 中可能有一个坏行,这可能是所有问题的原因(再次说明,我是新手)

    */20 * * * *    sync; echo 3 > /proc/sys/vm/drop_caches        

好吧,如果您需要任何信息,请告诉我,因为我真的不知道哪些信息在这里有用。另外,我想知道上面的 cron 任务是否不太糟糕。

答案1

运行 毫无意义echo 3 > /proc/sys/vm/drop_caches。当 Linux 内存不足时,它会自动删除缓冲区和缓存,因此强制删除有用的 i/o 缓存实际上是在损害系统性能。

您确实需要查看哪些东西可能消耗了所有内存。查看以下可能的罪魁祸首:

  1. Apache - 最大客户端数或服务器数过高。我推测您正在以预分叉模式运行。
  2. PHP - 最大内存、最大上传、数据库连接数
  3. 夜间 cron 任务,例如 slocate
  4. Mysql 内存使用情况。

更新型多巴胺 MySQL 可能被 OOMKiller 杀死,但实际上这不是原因。它可能只是最大的单一内存消耗者。

答案2

简单的解决方法:在服务器中放入更多内存。

但问题是服务器为什么会内存不足。您使用的是 InnoDB 吗?缓冲池大小是否合适?等等。需要更多信息来帮助您,首先从 htop 和 mysql 日志的输出开始。

相关内容