一次关于Apache 的httpd.exe占用服务器CPU到100%的问题处理心酸历程

25 篇文章 0 订阅

        我们公司有个客户的好些应用都放在同一台服务器上,今天下午正好要下班了,客户突然打电话来,说是他们的网站应用都打不开了,有的能打开,但是速度都超慢。

     然后我直接登录到服务器,顺便介绍一下服务器环境 :

                                              windows 2008 系统;

                                              XAMPP 集成环境(Apache 2.4.17+php 5.6) ;

     发现服务器CPU使用率一直在95%~100%,甚至连我的登陆界面都很卡。仔细看了其中一个占用CPU资源最高的进程:httpd.exe,一直在80%~95%左右波动,直接导致CPU满100%,这还得了!!!

       先去网上找了一下 httpd.exe 占用CPU 过高的解决方案,基本的解决方案都差不多,这里我先把自己整理的贴出来:

      在http.conf里面增加配置:

<IfModule mpm_winnt_module>
   ThreadsPerChild 1920
   #MaxConnectionsPerChild
   MaxRequestsPerChild 10000
   Win32DisableAcceptEx
</IfModule>

     但是, 重启apache的时候又出现了问题,报错提示: Invalid command 'Win32DisableAcceptEx', perhaps misspelled or defined by a module not included in the server configuration 

        然后又去网上找资料,发现这个跟Apache的版本有关:

     ①、如果你的apache版本为APAche2.0.49及以上版本,增加Win32DisableAcceptEx配置项,即:

<IfModule mpm_winnt_module>
   ThreadsPerChild 1920
   #MaxConnectionsPerChild
   MaxRequestsPerChild 10000
   Win32DisableAcceptEx
</IfModule></span>

               ②、如果你的 apache版本为 APAche2.4及以上版本,增加AcceptFilter http None AcceptFilter https None配置项替代“Win32DisableAcceptEx”,即:

<span style="font-size:18px;"><IfModule mpm_winnt_module>
   ThreadsPerChild 1920
   #MaxConnectionsPerChild
   MaxRequestsPerChild 10000
   AcceptFilter http None
   AcceptFilter https None
</IfModule></span>

      然而,我按照上面的方法更改之后,发现还是不行,只能继续找解决方法了。

     2、第二种方法,修改网络属性:

     ①.网上邻居->本地链接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉起用LMhosts查询前的勾。
     ②.控制面版->windows防火墙->高级标签->本地链接设置->服务的标签里勾选安全Web服务器(HTTPS)即可。

  结果依旧是失败了!

  3、第三种方法原因可能是金山毒霸或者升级精灵修改了WINSOCK导致。

在windows 的命令行下,输入以下命令,然后重启:

<span style="font-size:18px;">netsh winsock reset</span>

    不出意外,依然失败,只要一打开Apache服务,CPU就立马涨到了100%,无限纠结!

  4、和之前一个大神讲了这个事情之后,讨论是否是因为系统升级造成了这个原因,如果是这样的话,最好就把XAMPP升级到最新版吧,于是找到官方最新版,Apache从2.4.17升级到了2.4.23这个版本,重新安装之后,启动后发现CPU的占用情况已经大大的好转了。

  不过当我把客户应用再次加入进去的时候,发现httpd.exe进程再次占用CPU到100%的情况又出现了,这次说明问题是出在客户的应用上了。

  5、排查程序。

    按照这种思路,将客户所有的应用,拆开单独安装在Apache上运行,找了一会儿,终于发现其中一个应用的异常了,只运行这一个应用,CPU都占用了接近100%。

    然后查看这个应用的日志,发现不同的IP在连续访问同一个接口(这个接口在一定情况会记录日志),造成日志文件大量堆积,并且新的日志在不断的增加,同时会占用网络资源,拖垮整个服务器。这很明显了,有人在进行恶意访问接口!

  解决方案:

  ①、安装 “安全狗”服务器版,然后限制每秒的访问数量;

  ②、优化该接口,必须通过验证,才能调用数据。


  终于处理完了,时间也到凌晨2点,以前没怎么遇到过DDOS攻击,所以也没有留意,写下这次的经历,希望大家也能借鉴一二。


参考资料:

http://blog.csdn.net/ssgo66/article/details/46753465

http://www.111cn.net/phper/apache/45613.htm

http://blog.csdn.net/kof820/article/details/17911385



  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值