我使用的是 2GB 内存、2 核 XEON 处理器。我想配置我的 Apache、MySQL 和 PHP 以获得高性能,但现在当我尝试使用压力测试来测试我的服务器时,它很快就崩溃了。
当我查看日志时,它显示 apache 和 mysql 内存不足。
请帮忙!!!
答案1
最典型的情况是,您的所有物理内存 (RAM) 都被正在运行的应用程序占用,导致交换空间被占用。当您的机器开始使用交换空间时,您会发现 IO 开始变慢(因为使用交换空间也会占用可用的 IO),这会导致页面加载时间更长。这反过来又会导致更多页面渲染停留更长时间,并且随着您不断输入更多页面请求,循环会自行完成,最终您的机器在交换 IO 的重压下变得无响应。
这里的关键是您需要为 MySQL 和 Apache 设置内存边界(php 通常与 Apache 合并)。
首先,您需要知道运行 MySQL 需要多少内存,然后为 MySQL 设置限制。互联网上和此站点上都有关于此过程的信息。
在您为系统分配一些内存,然后为 MySQL 分配一些内存之后剩下的内存中,您需要查看 apache/php。
可以同时服务的 apache 子进程数量很大程度上取决于 Wordpress 加载单个页面所用的内存量,而这个数量会因您在 wordpress 中激活的插件而有很大差异。理想的第一步是评估 php 进程可以使用的最大内存量,因为您可能不会使用超过这个内存量,再加上每次加载页面时 apache 的一点开销。
然后,将其除以可用 RAM,您就会得到一个合理的 Apache MaxClients 起始值。同样,许多地方都有关于限制 Apache 内存使用的信息,有人可能会在此线程中链接一些信息。
要记住的最重要的事情是我的第一条建议;您使用的内存很可能比可用的物理 RAM 多,这会导致交换使用量过大。如果您的服务器负载持续过大,这种情况是无法在没有限制的情况下解决的。
在您考虑是否需要担心这种“最坏情况”之前,我必须说您几乎肯定会担心;没有什么比不得不硬重置 Linux 机器更有趣的了,因为上述计算尚未完成,而另一台机器在半夜变得没有响应,因为蜘蛛或其他烦人的机器人爬行了您的网站。