WordPress负载/CPU/内存资源占用过高

前几天突然发现,资源负载过高,CPU占用100%,内存占用100%。这种情况,一般是被攻击导致,因为我用了WP Super Cache,普通页面都是静态的,不可能出现这种资源占用过高的情况。这种情况,就要远程登录一下终端,输入命令top,通过Shift+.或者Shift+,来判断下哪个进程占用极高。

当然,如果资源占用太高,导致无法远程连接终端(SSH登录),你可能需要在服务器后台哪里重启一下服务器,然后再远程登录。然后再看top命令的输出结果。

图片[1]-WordPress负载/CPU/内存资源占用过高-小四运营

实测中,我发现Memcached进程占用极高,这个是内存缓冲插件。大致就可以判断问题:有人疯狂在网站内用随机字符串搜索关键词,导致频繁查找内存数据,Memcached再缓冲进内存里。这要,就导致网站占用极高。这种情况,目前只能禁用Wordpress自带搜索来防止这种攻击手段。

除此之外,你也要查看网站运行日志问题,查看是否被大量CC攻击。防CC攻击,网上方法有很多,这里就不再一一介绍了。

本文主要给出如何屏蔽Wordpress自带搜索功能,以及替换为百度/必应/谷歌站内搜索的方法。其中,站内搜索即,在百度/必应/谷歌等搜索引擎内只搜索本站资源。

下面,正式开始教程:

在主题目录function.php中加入如下功能,禁用WordPress自带搜索:

//禁用WordPress前台搜索功能
function disable_search( $query, $error = true ) {
	if (is_search() && !is_admin()) {
		$query->is_search = false;
		$query->query_vars['s'] = false;
		$query->query['s'] = false;
		if ( $error == true )
		// 执行搜索后显示的错误页面
		// $query->is_home = true; //跳转到首页
		$query->is_404 = true;//跳转到404页
	}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', function($a){return null;});

在主题目录header.php中,找到搜索功能性代码,替换为如下站内搜索代码:

<form class="navbar-search" action="https://www.bing.com/search" target="_blank" id="SearchForm">
  <script type="text/javascript">
  function changeAction(){
    var str=document.getElementById("SearchType").value;
    if(str=="BD"){
      document.getElementById("SearchForm").action="https://www.baidu.com/baidu";
      document.getElementById("InputName").name="wd";
      document.getElementById("site").name="si";
      document.getElementById("site").value="iymark.com";
    }else if(str=="BG"){
      document.getElementById("SearchForm").action="https://www.bing.com/search";
      document.getElementById("InputName").name="q";
      document.getElementById("site").name="q1";
      document.getElementById("site").value="site:iymark.com";
    }else{
      document.getElementById("SearchForm").action="https://www.google.com/search";
      document.getElementById("InputName").name="q";
      document.getElementById("site").name="domains";
      document.getElementById("site").value="iymark.com";
      document.getElementById("site1").value="iymark.com";
    }
  }
  </script>
  <div class="navbar-search-inner">
  <?php WPCOM::icon('close', true, 'navbar-search-close');?>
  <select class="search-type" id="SearchType" onchange="changeAction()">
    <option value="BG">必应</option>
    <option value="BD">百度</option>
    <option value="GG">谷歌</option>
  </select>
  <input type="text" class="navbar-search-input" name="q" size="12" id="InputName" placeholder="输入关键词进行站内搜索">
  <input name=q1 type=hidden value="site:iymark.com" id="site">
  <input name=tn type=hidden value="bds">
  <input name=cl type=hidden value="3">
  <input name=ct type=hidden value="2097152">
  <input type=hidden name=sitesearch value="iymrak.com" id="site1">
  <button class="navbar-search-btn" type="submit"><?php WPCOM::icon('search');?></button>
  </div>
</form>

图片[2]-WordPress负载/CPU/内存资源占用过高-小四运营

请注意,如上代码中出现的iymark.com为本站域名,需要自行更换为你自己的域名。并且你需要确保百度/必应/谷歌对你网站的收录是正常的,否则站内搜索就没有任何意义了。

实际的效果,可以点击本站导航菜单中的搜索功能来体验。

    © 版权声明
    THE END
    喜欢就支持一下吧
    点赞0 分享
    评论 抢沙发

    请登录后发表评论

      暂无评论内容