原因
之前文章中提到,本博客目前使用Apache(httpd)作为Web服务器,实际使用时发现,httpd经常出现内存占用过高,导致出现大量的swap,从而严重影响性能。
下图分别展示了服务器的内存使用量、管理员页面生成耗时和博客主页生成耗时,可以看到,系统中swap已经被占用了2GB,可用的内存只有78.5MB,导致页面生成时间很长。



并且在实际使用中,随着打开页面种类的增多,内存和swap使用量会进一步增加,直到swap也被占满,导致页面报错无法打开,甚至可能导致服务器崩溃。不论是从写作角度还是阅读角度,体验都非常糟糕。
迁移至Nginx
为了解决上述内存问题,本文首先尝试对Apache的配置进行一定的修改,但似乎没有很大作用。关闭插件进行测试问题也依然存在。
在浏览更多的帖子并咨询GPT后,发现Nginx在性能上有一定优势,或许能够解决该问题,因此决定将博客迁移至Nginx。
环境配置
这里主要参照Nginx与PHP官网的安装指南进行安装。编译安装PHP时需要注意,WordPress推荐加载一些PHP扩展,参考此文章。在使用pecl安装部分插件时,需要注意编译时PHP时必须加载OpenSSL,否则会出现pecl无法搜索到指定包且无法更新频道的问题。WordPress由于PHP不支持caching_sha2_password无法连接MySQL的问题同样也可能是OpenSSL扩展未加载导致的。
不同于Apache,Nginx需要额外配置才能使用Rest API,在启用Permalink时进行如下配置(参考此文):
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php$is_args$args;
}
在不启用Permalink时:
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /index.php?rest_route=/$1 last;
}
结果
迁移后的实际效果如下图组所示:



可以看到,内存占用有很大改观,目前服务器基本不会再使用swap,并且还能进一步预留出400~500MB的空闲内存,页面的生成时间也得到了很大的改善。实际使用一段时间后,体验提升明显。