wordpress吃内存?大多是插件的问题

昨天折腾了一天,自己的一个用wordpress搭的站点竟然提示内存不够用,不能正常访问了。

网站访问出错

百度了一下,都说是wordpress太占内存,众说纷纭,有不少人说是要把分配内存的最大值改大。没办法,我照着改了一下,确实能打开了。

问题是,网站变得无比的卡,我观察了一下服务器的CPU和内存的占用,几乎每一次的访问都爆掉了,CPU100%,内存快占满了。显然,问题不在分配内存上。

重新看之前问题的截图,说是wp-db.php的问题,我去看了一下源代码,并没有什么稀奇。是这么一个函数

function _real_escape( $string ) {
    if ( $this->dbh ) {
        if ( $this->use_mysqli ) {
	    return mysqli_real_escape_string( $this->dbh, $string );
	} else {
	    return mysql_real_escape_string( $string, $this->dbh );
	 }
    }

    $class = get_class( $this );

        if ( function_exists( '__' ) ) {
	    _doing_it_wrong( $class, sprintf( __( '%s must set a database connection for use with escaping.' ), $class ), E_USER_NOTICE );
	} else {
	    _doing_it_wrong( $class, sprintf( '%s must set a database connection for use with escaping.', $class ), E_USER_NOTICE );
	  }

    return addslashes( $string );
}

就是一个和数据库有关的函数,问题可能就出在数据库了。

再结合一下访问日志,我发现有很多本服务器ip访问自己的记录。而且访问的都是wp-cron.php,百度了一下,这个是wp的定时功能,用于定时发布文章,定时备份数据库等功能。可是之前用都基本没有问题的啊。

再用PHPmyadmin查看一下数据库表,问题出现在这里!原来,wp_options表的 cron写入大量无用的数据,果然是它。更深度的原因,竟然是百度sitemap插件!

相信很多站长都有用这款插件,自动生成网站地图,是国人柳城开发的,但这款插件许久没有更新了,而wordpress最近自动更新到最新版本,导致插件不兼容。这款插件用到了定时的功能,来更新站点地图,于是在不兼容的情况下,往数据库里面写入了大量无用的数据。

于是,出现了以上的所有情况。

真相大白,把数据库wp_options表清理了一下,停用了这款插件。网站终于正常。现在回头看,这款插件真的是新手才会用的,用代码完全可以直接实现,而且不用多余的写入数据库、定时更新。教程请移步–>wordpress代码实现网站地图sitemap的html和xml的方法

总结一下,看了网上其它人的情况,还有自己的情况,基本上可以看出来,当你的wordpress内存不足,或者很占CPU的时候,要么是你网站的访问量突然很大,要么,就是插件的问题了。而现在的wordpress有自动更新机制,建议停掉,然后在手动更新之前,看看自己的插件能不能兼容新版本,插件的更新也要及时。

另外,网站访问日志、错误日志也要好好看!问题大多能在里面找到!

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注