
经常有人问我:一个服务器能放几个WordPress站?我的实际答案是:优化好了,2核4G跑8个都没问题。这是我手上一个服务器的真实配置,跑了两年多了。
核心思路就一条:别让每个请求都跑完整套WordPress。具体做了几件事。
第一,Nginx FastCGI Cache。WordPress最耗资源的就是PHP动态渲染,但如果内容没变,缓存成静态HTML直接返回,PHP根本不启动。配置不复杂:nginx.conf里加fastcgi_cache_path,站点配置里加fastcgi_cache指令,登录用户和POST请求跳过缓存。配完后首页响应从800ms降到了80ms。
第二,Redis对象缓存。WordPress默认把options、transient这些存在MySQL里,每次请求都要查数据库。装个Redis Object Cache插件,把这些数据扔到内存里,数据库压力直接减半。2核4G分512M给Redis绰绰有余。
第三,数据库慢查询优化。用Query Monitor插件揪出来最慢的查询——往往是某些插件写的烂SQL。我清掉了一个过时的"相关文章"插件,它的查询每页执行一次全表扫描。自己写了个简单的替代,用category和tag过滤,查询从1200ms降到了3ms。
第四,图片全走CDN。不是把所有图片放CDN就完了——WooCommerce的商品图、媒体库的缩略图、主题的静态资源全部设置CDN域名。阿里云OSS+CDN一个月八块钱,省下来的是服务器的带宽和IO。
第五,PHP-FPM调参。默认配置是按"够用"调的,不是按"最优"。我把pm改成了ondemand,pm.max_children设成20,pm.process_idle_timeout设成30秒。效果是:没流量的时候PHP进程自动杀掉释放内存,流量来了再启动。
总结一下:能缓存就缓存,能不查数据库就不查,能走CDN就走CDN。2核4G跑8个站,内存日常占用60%左右。
标签: 服务器优化 wordpress Nginx缓存 Redis
还木有评论哦,快来抢沙发吧~