httpd.exe占用100%CPU

    最近两天被服务器上的apache搞得比较郁闷,每次开启apache之后其后台进程httpd.exe总是占用100%,而且服务器本身能够远程桌面连接(说明网络连接正常),但是却无法上Internet网(可以使用IP上网,不能使用域名,即DNS出现问题),联系了服务器托管商的IDC也没能帮我们解决,只好自己动手,丰衣足食了。

        开始以为是端口问题,在apache打开时,在cmd下使用netstat -ano命令查看80是否被其他程序占用,但是根据PID显示在(如下:1364)的却是httpd.exe这个apache的后台线程占用着80端口。在将apache关闭之后再使用socket tool这个工具来测试80端口,这时80端口仍然可用。充分说明不是端口的问题,同时该端口也并未受到攻击。




在网上也没有能够直接找到比较好的解决方法,后来在一个帖子上看到说,有可能是apache与其他的软件冲突了(参考http://topic.csdn.net/u/20080331/14/9a86ed60-285e-49b9-a11c-f42810dc64a5.html的35楼)。如果是冲突,他会一直写在apache/logs/ 目录下的 error.log  错误日志。结果结果我看到我的error.log文件已经达到将近700M的大小,而且在开着apache的时候还在不断增大。看到里面的错误是“(OS 10038)在一个非套接字上尝试了一个操作。  : Child 8164: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive.”最后终于在网上找到了相应的解决方法(参考http://www.cnblogs.com/mr-jhao/articles/2240699.html)

(1)编辑httpd.conf

Win32DisableAcceptEx ##加入这行
ThreadsPerChild 
250
MaxRequestsPerChild 
0

重启apache就解决了。

修改后还是不行,任然有错误记录,CPU占用率是降低了,但是还是没有恢复到原来的状态.logs里面还是一直在记录下面的错误报告。

(2)在win命令行cmd下,输入以下命令

netsh winsock reset

        原因与winsock有关,这里主要是因为金山毒霸或者升级精灵修改了WINSOCK导致的。由于我电脑上也安装了金山毒霸,而且最近几天也升级过了,应该是同样的问题。

使用此条命令恢复后,重启电脑,这下Apache恢复当原先的良好状态了。


-----------------------------------------------分割线---------------------------------------------------------

        对于上面加入httpd.conf中内容的解释参考http://topic.csdn.net/u/20080331/14/9a86ed60-285e-49b9-a11c-f42810dc64a5.html的5楼的回答

        通常在“Windows任务管理器-进程”中可以看到两个httpd.exe进程,一个是父进程、一个是子进程,父进程接到访问请求后,将请求交由子进程处理。
        MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。在处理“MaxRequestsPerChild 数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。
       如果MaxRequestsPerChild缺省设为0(无限)或较大的数字(例如10000以上)可以使每个子进程处理更多的请求,不会因为不断终止、启动子进程降低访问效率,但MaxRequestsPerChild设置为0时,如果占用了200~300M内存,即使负载下来时占用的内存也不会减少。内存较大的服务器可以设置为0或较大的数字。内存较小的服务器不妨设置成30、50、100,以防内存溢出。


posted on   h2内存数据库  阅读(7088)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2011年12月 >
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

统计

点击右上角即可分享
微信分享提示