我的nginx有8个进程,每个进程大约占用1500万内存。
有时,我的nginx也会因此而被杀(Dmesg)
21228总分页缓存50页交换缓存统计数据:添加85页,删除35页,查找63/64空闲交换区= 2031300kB总交换页= 2031608kB 3407856页RAM 3180034页内存3180034页HighMem 290515页保留36448页共享491788页非共享 内存不足:杀死进程16373 (nginx)得分5013或儿童
我搜索了一下,发现的低内存用完了,所以oom杀手开始工作了.
以下是我的问题:
发布于 2012-07-04 07:13:36
我注意到您有很多免费的交换,这应该会阻止OOM杀手的激活,但由于某种原因没有激活。服务器错误的This question表示,未使用交换的OOM意味着失败的分配处于内核模式,这是由一个需要大量内存的驱动程序造成的。这也解释了为什么空闲的HighMem不能满足请求(内核模式可以从特定区域请求内存)。您应该在dmesg中看得更远一些,看看是否有任何线索,比如回溯。
至于问题的第三部分,HighMen和LowMem在使用PAE时是有区别的,因为它将物理地址空间扩展到36位,而虚拟地址空间仍然是32位。访问全部潜在的64G物理地址不能像访问固定的4G子集那样快,因此内核将内存分开,并试图在“低”区域保持最关键的性能。
https://stackoverflow.com/questions/11322360
复制相似问题