ITPub博客

首页 > 自动化运维 > 应用服务器 > ECS内存占用高导致wordpress数据库经常挂掉的两种解决方法

ECS内存占用高导致wordpress数据库经常挂掉的两种解决方法

应用服务器 作者:lixon166 时间:2021-02-15 16:08:45 0 删除 编辑

wordpress搭建的网站,用的是一个超级简单的主题,阿里的免费虚机,纯粹的文字内容,几乎没有插件。用的是正版begin主题,插件尽可能少,最近连seo插件都没用了,但是依旧经常宕机,动不动提示数据库连接错误,重启立刻恢复。看了看,内存占用一直在90%以上,所以怀疑是主题功能太多,占用内存高,导致mysql挂掉。几乎一天挂一次了。

目前反而免费虚机稳定,不过一被攻击就停机4小时实在受不了,不过反正就是放自己文字,没什么别的用处,也没想要人访问,所以无所谓了。飞向电影还是希望能有些访问的,但是一直经常性的出现mysql挂掉的问题,自己网站运维确实是小白,心碎。

关于ECS上搭建 wordpress网站,mysql挂掉的问题,网上好多建议用阿里云RDS,但是价格太高,目前低配一年就1000多,比ECS价格贵得多。对于一个没收入的个人小站来说,没必要投这个钱。也有建议升级内存的,但是我不确定是不是确实就仅仅是内存问题,留待观察,有必要的话倒是可以升级一下。

问度娘了之后,做了些修改。

一:通过修改WordPress自身文件修改放宽内存限制(如果你也是由于使用过多插件造成该问题的,建议使用此方法)

只要打开WordPress根目录wp-includes文件夹下default-constants.php文件,搜索“set memory limits”找到如下代码

// set memory limitsif ( !defined('WP_MEMORY_LIMIT') ) {if( is_multisite() ) {define('WP_MEMORY_LIMIT', '64M');} else {define('WP_MEMORY_LIMIT', ‘40M');}}if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {define( 'WP_MAX_MEMORY_LIMIT', '256M' );}

然后把define(‘WP_MEMORY_LIMIT’, ‘40M’);32M这个默认值修改为更大一些的值,我把它修改为512M!

二:修改php-fpm.conf的pm.start_servers、pm.min_spare_servers、pm.max_spare_servers等项

据说问题出在PHP-CGI会释放内存,但并不会把内存归还系统,所以当过多的PHP-FPM子进程存在时,内存就会一点点被吃干,最终导致溢出。
php-fpm.conf文件在/alidata/server/php/etc里,找到并做了几项修改:
打开编辑这个文件,可以通过FTP或者LINUX命令行进行修改。主要涉及几个参数。
pm 这个是设置运行方式的,分别是static(静态)或者dynamic(动态)
默认应该是在214行左右,显示为?pm = dynamic,意思就是动态方式,如果内存小,比如512M,1G,2G之类,建议使用动态。
pm.max_children:静态方式下开启的php-fpm进程数量,这个是有在pm模式为static的情况下生效。

pm.start_servers:动态方式下的起始php-fpm进程数量,这个是pm位dynamic模式下需要设置的参数,意思就是启动运行时建立的起始php-fpm进程数量,默认20,暂时改成pm.start_servers =?3

pm.min_spare_servers:动态方式下的最小php-fpm进程数,默认5,暂时改成pm.min_spare_servers =?3

pm.max_spare_servers:动态方式下的最大php-fpm进程数量,默认60,暂时改成pm.max_spare_servers =?10

pm.max_requests:接受多少次请求后自动重启进程的,默认是500,暂时改成pm.max_requests = 200
重启后睡觉了(呃,太晚了),第二天看了下云监控,内存占用从98%,降到了54%.

目前就改了这两处,留待观察。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69992808/viewspace-2757285/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-01-07

  • 博文量
    13
  • 访问量
    10524