交换空间过多导致内存不足?

交换空间过多导致内存不足?

我有一个运行 centos 6.9 的小型 rackspace vm (512M)。它运行一个辅助名称服务器和一个用于显示状态的小型 wordpress 实例。我不想为多一点内存和一堆我不需要的磁盘空间支付 3 倍的价格。

问题是 mysqld 和/或 named 经常因内存不足错误而被终止。当问题首次出现时,我添加了 1G 的交换空间,但似乎没有帮助,事实上,在发生这种情况时转储的日志消息中,它甚至说几乎没有使用交换空间:

Sep 10 20:51:12 rackit2 kernel: 2978 total pagecache pages Sep 10 20:51:12 rackit2 kernel: 2361 pages in swap cache Sep 10 20:51:12 rackit2 kernel: Swap cache stats: add 148505795, delete 148503434, find 96388662/110607450 Sep 10 20:51:12 rackit2 kernel: Free swap = 953396kB Sep 10 20:51:12 rackit2 kernel: Total swap = 1035256kB Sep 10 20:51:12 rackit2 kernel: 131071 pages RAM Sep 10 20:51:12 rackit2 kernel: 5834 pages reserved Sep 10 20:51:12 rackit2 kernel: 1767 pages shared Sep 10 20:51:12 rackit2 kernel: 119683 pages non-shared

另一件奇怪的事情是,它说正在杀死 httpd,而事实上,它杀死了 mysqld:

Sep 10 20:51:12 rackit2 kernel: Out of memory: Kill process 16299 (httpd) score 15 or sacrifice child Sep 10 20:51:12 rackit2 kernel: Killed process 16299, UID 48, (httpd) total-vm:382360kB, anon-rss:15648kB, file-rss:12kB

# ps ax | grep httpd 3904 pts/0 D+ 0:00 grep httpd 13721 ? S 0:09 /usr/sbin/httpd 26698 ? S 0:20 /usr/sbin/httpd 30254 ? Ss 14:41 /usr/sbin/httpd # ps ax | grep mysqld 3906 pts/0 S+ 0:00 grep mysqld #

我看到关于提交限制的讨论Linux oom 似乎不恰当地终止了一个进程 - 我可能遗漏了什么?但这似乎也足够高了:

CommitLimit: 1285728 kB Committed_AS: 276332 kB

(并重新启动 mysqld:)

CommitLimit: 1285728 kB Committed_AS: 602712 kB

相关内容