博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
httpd.exe占用100%CPU
阅读量:6064 次
发布时间:2019-06-20

本文共 1835 字,大约阅读时间需要 6 分钟。

    最近两天被服务器上的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,以防内存溢出。

你可能感兴趣的文章
本地连接linux虚拟机的方法
查看>>
iview,用render函数渲染
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
Django 与 MySql 的 Q & A
查看>>
我的友情链接
查看>>
SQL Server 2012 错误处理增强THROW
查看>>
Chapter1-怎么在visual studio 2012上运行第一个cocos2d-x项目:Hello World!
查看>>
用户端NAT远程拨号接入
查看>>
Oracle Java Stored Procedure + 包调用
查看>>