热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

我维护一个Gentoo服务器,其中包括一些服务,包括Apache.它相当低端(2GB内存和2个内核的低端cpu).我的问题是,尽管我付出了最大的努力,但是一个过载的Apache会崩

我维护一个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实现中的一个问题……



推荐阅读
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 解决宝塔面板Nginx反向代理缓存问题
    本文介绍如何在宝塔控制面板中通过编辑Nginx配置文件来解决反向代理中的缓存问题,确保每次请求都能从服务器获取最新的数据。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 本文深入探讨了Linux内核中进程地址空间的设计与实现,包括虚拟地址空间的概念、内存描述符`mm_struct`的作用、内核线程与用户进程的区别、进程地址空间的分配方法、虚拟内存区域(VMA)的结构以及地址空间与页表之间的映射机制。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
author-avatar
小石子Sandra
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有