我的网络服务器上应该有多少可用内存?

nea*_*lob 8 memory web-server wordpress apache-2.2

我有一个网络服务器,目前托管着两个 Wordpress 站点和一些基于 Java 的协作软件。服务器有 2G 内存,目前使用了大约 1.8G 的可用内存。现在这里的内容几乎是一个试点项目,流量可以忽略不计,所以我认为很明显我将需要更多内存。

我想知道,如果我要发布它,我如何根据它获得的流量来预测我的内存需求。我在谷歌上四处寻找,我发现的东西有点脆弱。在根据服务器上的基本(无流量)负载计算内存需求时,是否应该使用一种很好的启发式方法?

作为参考,输出free -m可以在下面看到:

             total       used       free     shared    buffers     cached
Mem:          2048       1832        215          0          0          0
-/+ buffers/cache:       1832        215
Swap:            0          0          0
Run Code Online (Sandbox Code Playgroud)

对我来说,这看起来像是实际使用的内存,并不是由于缓存或其他任何原因造成的错觉。

我认为我的协作软件的需求必须经过实验测试,所以这里free -m没有运行该软件:

             total       used       free     shared    buffers     cached                                     
Mem:          2048       1109        938          0          0          0                                     
-/+ buffers/cache:       1109        938                                                                      
Swap:            0          0          0   
Run Code Online (Sandbox Code Playgroud)

我解决这个问题的计划 B 是向服务器添加一堆交换空间,为其提供一些流量并根据交换使用的数量进行调整。我只是想知道是否有人有一个很好的经验法则来估计我应该提前计划多少内存……或者我的想法是否疯狂。

非常感谢(我对此非常陌生)。

Gia*_*968 18

答案基本上是:视情况而定。在您的特定情况下,您安装的站点的质量和效率可能会受到质疑。

例如,本周我正在处理一个流量相对适中但占用 4GB 内存的服务器。在进行代码审查后——整个站点使用的是类似于 WordPress 的现成 CMS,但具有自定义功能——我们发现了一个主要瓶颈。一旦我们重新解决了这个问题,服务器现在平均每天使用大约 2GB 的 RAM。RAM 使用率下降 50%!

我不建议做一些像拆分服务器以使用 Ngnix 和 Apache 之类的事情。只需使用Apache。平衡两个不同服务器的配置的麻烦不值得边际收益。阿帕奇没问题。但这就是说,你应该在同一个盒子里考虑你的 WordPress PHP 站点、Java 应用程序和 MySQL。根据我的经验,您应该执行以下操作:

  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 数据库移至独立服务器。您可能需要学习如何对服务器进行正确的网络和防火墙设置,以允许您的服务器访问但防止黑客入侵,但性能优势将是巨大的。
  4. 考虑将 Java 应用程序移动到另一台服务器:我的经验法则是每个服务器一个主要的 Java 应用程序。一般来说,与 WordPress 等 PHP 设置相比,Java 应用程序可能会占用大量内存。通过为 Java 应用程序提供它自己的服务器来使用,WordPress 站点会更快乐。

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

  • 每天 50 个用户?我不会担心流量那么低的任何事情。此外,当您提到 JavaScript 和 CSS 时,您忽略了有关站点优化的要点。这严格来说是一个前端问题。至少与服务器内存无关。服务器关注生成内容和发送内容。这就是为什么我的答案列出了它的作用。优化其他任何东西——比如 JavaScript、CSS 和 HTML——对服务器资源的影响为零。所有这些都是客户端。 (2认同)