在上一节教程中,我们已经搭建了wordpress环境php+nginx+mysql+redis,并完成wordpress安装,目前你应该可以正常登录wordpress后台了。
这篇文章是wordpress优化的第一篇文章,主要是软件配置方面的内容,后面我们还会再写一篇wordpress动静分离使用CDN的文章,主要优化内容如下:
- 安装静态化插件wp super cache或安装redis插件Redis Object Cache
- 修改php和nginx上传文件大小限制
- 配置php-fpm进程数
- 降低mysql内存占用
一、安装静态化缓存插件wp super cache或安装redis插件Redis Object Cache
静态化缓存和redis对象缓存都是为了加速查询数据产生的两种方案,前者是将文章/页面缓存成html文件,后者是将数据缓存到内存中加快查询速度,这两种方案如何选择?
- 对于内存较小的服务器,使用静态化缓存方案占用内存少
- 对于内存足够用,大于2G的情况,使用redis缓存较好,个人更偏向于redis,建议使用腾讯云用户使用redis。
选项1、安装静态化插件wp super cache
工作原理:
常规情况下wordpress文章页面数据存储在mysql数据库中,浏览器请求的网页加载时需要首先查询数据库返回数据,每次加载页面都需要查询数据库,mysql的负载就会比较高。
使用wp super cache插件后,文章/页面等数据会缓存成静态文件,浏览器请求的网页加载时直接返回静态文件,无需查询数据库,提高响应速度。
安装插件:
- 可直接在wordpress后台【插件】中搜索wp super cache然后在线安装即可。
- 对于国内服务器,wordpress在线安装插件因为下载速度慢,可能会失败,你也可以通过下面的链接将wp super cache安装包下载下来,然后通过wordpress后台【插件】-【安装插件】-【上传插件】安装。
下载地址:
wp super cache下载,https://downloads.wordpress.org/plugin/wp-super-cache.1.7.1.zip
启用插件:
1、在后台【插件】中启用wp super cache,然后点击【设置】,进入此插件配置页面。
2、在插件设置页面,勾选启用,然后保存即可。
选项2、安装redis插件Redis Object Cache(推荐)
工作原理:
wordpress redis插件,将原本需要查询mysql的内容缓存在内存中,更快的响应速度。
安装插件:
- 可直接在wordpress后台【插件】中搜索Redis Object Cache然后在线安装即可。
- 对于国内服务器,wordpress在线安装插件因为下载速度慢,可能会失败,你也可以通过下面的链接将Redis Object Cache安装包下载下来,然后通过wordpress后台【插件】-【安装插件】-【上传插件】安装。
下载地址:
redis object cache下载,https://downloads.wordpress.org/plugin/redis-cache.2.0.15.zip
启用插件:
1、在后台【插件】中启用redis object cache,然后点击【settings】进入设置页
2、点击【enable object cache】启动插件即可,插件会自动连接redis
3、redis目前未配置最大内存限制,对于一个初期网站,内存大于2G的情况下,redis内存占用不会特别大,当数据量大到内存占用过多,导致mysql/php等内存不够用时,我们才开始需要考虑增加内存或是设置最大内存占用并启用Policy策略。
二、修改php及nignx上传文件大小限制
1、修改php上传文件大小限制
remi源安装的php配置位置位于:/etc/opt/remi/php74/php.ini
vi /etc/opt/remi/php74/php.ini
然后修改upload_max_filesize和post_max_size两个参数,下图示例中我修改为20M
然后重启一下php(注意本教程是使用remi源安装,所以服务名可能和其他情况不一样)
systemctl restart php74-php-fpm
2、修改nginx上传文件大小限制
nginx配置文件位置位于:/etc/nginx/nginx.conf
vi /etc/nginx/nginx.conf
然后修改client_max_body_size参数,下图示例中我修改为20M
然后重启nginx
systemctl restart nginx
三、php-fpm进程数配置
一般来说以我们2G内存的服务器配置,php-fpm采用动态方式,我们的服务器是1M的带宽,而wordpress又不是CPU密集运算场景,所以综合带宽并发和内存情况,我们设置php-fpm初始进程为10个,最多不超过20个。
vi /etc/opt/remi/php74/php-fpm.d/www.conf
修改pm.start_servers = 10,pm.min_spare_servers = 10,pm.max_spare_servers = 20
然后重启php-fpm
systemctl restart php74-php-fpm
关于php-fpm的配置,还有一个相对重要的参数pm.max_requests,代表每个子进程可以处理的请求数,例如是500,那么处理500此请求后它将被杀死,目的是为了处理因万一引发的内存泄漏。
数值设置一般应该按照网站的请求量来设置,所以每个网站情况不同参数也不同,而且应该根据网站的访问量进行调整。我们按照20个子进程来计算,按照网站PV1000,pm.max_requests设置为500左右。
四、mysql内存占用配置
对于非独立服务器,mysql默认innodb内存占用总内存10%,这个我们可以不用管。如果你想指定一个数值那么需要编辑以下文件
vi /etc/my.cnf
然后修改innodb_buffer_pool_size的值,记得去掉前面的#号。如果你想降低mysql内存占用,那么我们可以关闭performance_schema,在my.cnf配置文件中增加一行performance_schema=off,mysql内存占用会有极大的降低。如下图
然后,保存,重启mysql。
systemctl restart mysqld
沟通交流
参考本系列教程中遇到问题和指正错误都可以添加woody微信沟通:anotherdayo
一来沟通交流共同进步,二来让教程内容更完善丰富,如果文章有幸让您有一些收获,欢迎点赞喜欢留言,加个关注更好啦!