linux服务器崩溃怎么解决办法,linux – 如何阻止Apache崩溃我的整个服务器?

博主正在处理一个Gentoo服务器的问题,Apache在高负载下会导致整个服务器崩溃。尝试了多种解决方案,如调整Apache的oom_adj、关闭交换、使用内存限制的cgroup、改变I/O调度程序等,但问题依然存在。Apache进程在cgroup oom killer触发时挂起,似乎存在cgroup实现的问题。寻求解决方案。
摘要由CSDN通过智能技术生成

我维护一个Gentoo服务器,其中包括一些服务,包括Apache.它相当低端(2GB内存和2个内核的低端cpu).我的问题是,尽管我付出了最大的努力,但是一个过载的Apache会崩溃整个服务器.事实上,在这一点上,我已经接近确信

Linux是一个糟糕的操作系统,不值得任何人在寻找负载稳定性的时候.

我试过的事情:

>为根Apache进程调整oom_adj(以及所有子进程).这几乎没有效果.当Apache被重载时,它会使系统崩溃,因为系统在它杀死任何东西之前将所有其他内容分页.

>关闭交换.没有帮助,它将卸载内存分页到进程的二进制文件和/上的其他文件,从而产生相同的效果.

>将其置于内存限制的cgroup中(限制为512 MB RAM,占总数的1/4).这“工作”,至少在我自己的压力测试中 – 除了服务器在负载下不断崩溃(基本上停止所有其他进程,通过SSH无法访问等)

>以空闲I / O优先级运行它.这最终不是一个好主意,因为它只是导致系统负载无限期地(成千上万)几乎没有可见效果 – 直到你试图访问磁盘的无缓冲部分.这导致任务冻结. (那么好的I / O调度,嗯?)

>限制与Apache的并发连接数.将数量设置得太低会导致网站无法响应,因为大多数插槽都被长请求(文件下载)占用.

>我尝试了各种Apache MPM但没有取得多大成功(prefork,event,itk).

>从prefork / event php-cgi suPHP切换到itk mod_PHP.这改善了性能,但没有解决实际问题.

>切换I / O调度程序(cfq到截止时间).

只是强调这一点:我不关心Apache本身是否在负载下,我只是希望我的系统的其余部分保持稳定.当然,让Apache在短暂的密集加载后快速恢复将是很好的,但一步一步.

现在,我几乎都惊讶于人类如何在这个时代设计一个操作系统,在这个操作系统中,这样一个看似简单的任务(不允许一个系统组件崩溃整个系统)似乎几乎不可能 – 或者至少,非常难做.

请不要建议虚拟机或“购买更多RAM”之类的东西.

在朋友的帮助下收集了更多信息:

当调用cgroup oom killer时,进程挂起.这是呼叫追踪:

[] ? prepare_to_wait+0x70/0x7b

[] mem_cgroup_handle_oom+0xdf/0x180

[] ? memcg_oom_wake_function+0x0/0x6d

[] __mem_cgroup_try_charge+0x32d/0x478

[] mem_cgroup_charge_common+0x48/0x73

[] ? __lru_cache_add+0x60/0x62

[] mem_cgroup_newpage_charge+0x3b/0x4a

[] handle_mm_fault+0x305/0x8cf

[] ? schedule+0x6ae/0x6fb

[] do_page_fault+0x214/0x22b

[] page_fault+0x1f/0x30

此时,apache内存cgroup几乎已死锁,并在系统调用中烧录cpu(所有内容都带有上述调用跟踪).这似乎是cgroup实现中的一个问题……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值