AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 638021
Accepted
CaptSaltyJack
CaptSaltyJack
Asked: 2014-10-19 09:56:56 +0800 CST2014-10-19 09:56:56 +0800 CST 2014-10-19 09:56:56 +0800 CST

服务器问题,内存不足,平均负载很高

  • 772

我迫切需要帮助来弄清楚如何解决我遇到的这个问题。我运行一个相当关键的网络服务器(Debian 7.5、512MB RAM、512MB swap、Apache、MySQL)。它在上面运行几个 WordPress 网站。今天我发现网站响应很慢,ssh 发现平均负载略高于 10.0,RAM 使用率为 100%,swap 接近 512MB 限制。

我不知道如何弄清楚发生了什么。Apache 或 MySQL 是否未正确调整?也许有人在反复攻击服务器(我怎么知道?)。我安装了htop,但即使我看到 Apache 或 MySQL 正在消耗大量资源,我怎么能找出原因呢?

任何正确方向的观点都将不胜感激。我在这里不知所措,我必须保持这台服务器稳定。

旁注:服务器运行了 30 天,所以这可能是某种缓慢的泄漏。现在我已经重新启动,平均负载为 0.45 1.10 0.88,RAM 为 165/512MB,swap 为 68/512MB。

更新:仍然有问题。htop我截取了下面的截图。

在此处输入图像描述

apache-2.2
  • 3 3 个回答
  • 1963 Views

3 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2014-10-27T09:44:48+08:002014-10-27T09:44:48+08:00

    恭喜,您已经设法使用了几乎所有的交换空间。

    这里第一个明显的问题是你深入交换了。这可能是导致系统如此剧烈抖动的原因(在系统中花费大量时间、I/O 等待和软件中断)。

    首先要做的是减少正在运行的 Apache 进程的数量。对于一个小型站点,你不需要那么多,它只会让你深入交换并扼杀你的表现......这已经发生了。我建议你从很小的地方开始,并在必要时增加。一个例子:

    StartServers            1
    MinSpareServers         1
    MaxSpareServers         2
    MaxClients              5
    

    这限制您只能同时处理 5 个请求(其他人都必须排队等候)。如果此时您收到来自 Apache 的关于服务器耗尽的警告,并且您仍有可用的 RAM,那么您可以增加它们,但您最终会遇到 VPS 根本没有足够的 RAM 来运行的地步。处理您的所有流量。此时您应该升级 VPS。

    • 4
  2. Giacomo1968
    2014-10-19T11:50:12+08:002014-10-19T11:50:12+08:00

    首先,根据您发布的带有htop输出的屏幕截图,您在运行 WordPress 的站点上似乎有 512MB 的 RAM?我从未见过 WordPress 在内存小于 1GB 的服务器上感到高兴。也许如果您正在运行测试或开发站点,512MB 就足够了,但对于生产站点,您需要 1GB 的 RAM。那是你问题的根源。也就是说,这里有一些想法可以帮助您从现有设置中获得更好的性能:

    我不知道如何弄清楚发生了什么。Apache 或 MySQL 是否未正确调整?也许有人在反复攻击服务器(我怎么知道?)。我安装了 htop,但即使我看到 Apache 或 MySQL 正在消耗大量资源,我怎么能找出原因呢?

    首先,我不会对发生的攻击感到恐慌。现实情况是,您的服务器可能只是承担了高负载的合法流量,但服务器本身并未针对您的使用进行配置/调整。当然,糟糕的配置可能会让您在 DDoS(分布式拒绝服务)攻击期间坐下来,但是当好的/正常流量突然大量出现时,这一切都会让您的生活变得悲惨。

    我发布了一个很好的项目列表,您可以查看以提高您在另一个类似问题上的 LAMO 堆栈性能,并将在此处重新发布以供您参考:

    1. 正确配置 Apache: Apache 是一个很好的软件,但开箱即用它是一个内存猪。例如,我相信默认是允许每秒 255 个连接?我可以向你保证,大多数简单的网站在好日子里每秒几乎不能获得 40 个连接。因此,将 Apache 调整为适合您的流量会有所帮助。此外,KeepAliveApache 中有一个设置非常好用!但是开箱即用,我相信它被设置为MaxKeepAliveRequests100,这是相当疯狂的。我通常将其设置为大约 30 个连接,KeepAliveTimeout时间为 2 到 3 秒。关键是要具有与KeepAliveTimeout平均页面下载所需的速度相匹配的速度,并为开销/速度留出一点空间。因此,如果页面在 1 秒内加载,请执行KeepAliveTimeout2 秒。
    2. 检查您的 WordPress 网站的代码是否存在潜在瓶颈:专注于它的 PHP 核心并清除您可以做的事情。注意过多的 MySQL 调用和文件系统调用。这是您可以让应用程序飞起来的地方!另外,检查memory_limit你的php.ini并确保它没有高于必要的值。默认为 64M,但在很多情况下可以降低到 32M。
    3. MySQL 调整或将其移动到它自己的服务器上:在上面写过 MySQL 之后,我意识到您可能将 MySQL 实例托管在同一个机器上。通过运行诸如MySQL 调优入门之类的脚本来研究优化 MySQL 性能。如果不进行调优,MySQL 将耗尽所有资源并导致系统瘫痪。通过调优,MySQL 将运行得更好/更快,并且可以释放资源用于其他目的。此外,考虑将您的 MySQL 数据库移动到独立服务器。您可能需要学习如何正确地对服务器进行网络连接和防火墙,以允许您的服务器访问但防止黑客攻击,但性能优势将是巨大的。

    关于 MySQL 调优,一开始可能需要几周时间才能确定。调整脚本的原因是基于 MySQL 看到的真实流量。因此,您基本上让您的网站向全世界开放,等待 2 天(至少),运行调整脚本,然后再等几天再调整一些。大约一周后,您应该能够调整 MySQL 以使其与您的设置一样好。

    • 3
  3. WindArtas
    2014-10-19T11:30:53+08:002014-10-19T11:30:53+08:00

    首先安装这些插件:超级缓存(htaccess模式)、wpbase、小部件缓存。Wordpress 以存在这些问题而闻名。如果这没有帮助,则可能是您的某个主题出现内存泄漏(尤其是在启用移动视图的情况下)。

    发布您的访问和错误日​​志。

    我强烈建议使用 nginx 而不是 apache。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve