遇上oom-killer

最近有几台加过内存的Dell 2950总是很囂张的把我的mysqld给kill掉了,原因是Out of Memary了。这几台机器都有添加新内存的经历。应该是OOM-killer在做怪了吧。查了一下,这种情况好象是发生在LowMemary耗尽的时候,kernel就会把某个倒霉的pid给干掉,而且这个时候他是不会管HighMemary还有没有剩余。先做了一些调整,看看情况再说吧。

sysctl -w vm.lower_zone_protection=250
sysctl -w vm.overcommit_ratio=70 #这个可能没什么大用吧

update:
适才到 delphij那里了解了一下,32位CPU有不同的工作模式,因APE增加了四条地址线,因此有36位的物理寻址能力,但寄存器是32位的,所以最多只能使用4G内存。但是OS有办法能让你运行的一大票进程访问的内存其实是4G之外的内存,但是MySQL是线程的,所以只能在同一个进程地址内。所以MySQL只能看到4G内存,但这4G内存有1G是系统使用的,所以只有3G内存给MySQL用。解决的办法就是换64位的吧。

link:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.