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

4.7
(10)

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

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

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>
WordPress负载/CPU/内存资源占用过高

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

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

最后,提一下我是怎么保证网站安全得:

[vk-content]

由于我没用过宝塔,目前自己正在琢磨着使用modsecurity来保证服务器安全,并且已经开始使用了。

如果你感兴趣,可以询问我具体如何操作

[/vk-content]

共计10人评分,平均4.7

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/1479.html

(1)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年01月16日 15:12
下一篇 2021年01月18日 19:36

你可能感兴趣的文章

发表回复

登录后才能评论

评论列表(2条)

  • 剑心的头像
    剑心 2022年06月13日 17:44

    古哥,你站点的百度搜索失效了,有空看看呗 然后求最新的代码偷笑

    微信小程序
    微信公众号