apache服务器httpd.exe进程占用cpu100%

apache中MaxRequestsPerChild参数配置经验分享

MaxRequestsPerChild在apache中是一个非常重要的参数对于网站流量过大机器配置不好的朋友可以通过MaxRequestsPerChild来合理的设置进程与子进程的数量以达到最优的配置,下面一起来看看关于MaxRequestsPerChild参数配置的例子。

MaxRequestsPerChild参数介绍

用 记事本打开apache2confhttpd.conf,

查找MaxRequestsPerChild,将MaxRequestsPerChild 0改成MaxRequestsPerChild 50即可。

通常在“Windows任务管理器-进程”中可以看到两个apache.exe进程,一个是父进程、一个是子进程,父进程接到访问请求 后,将请求交由子进程处理。

MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。在处理 “MaxRequestsPerChild 数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。

如果 MaxRequestsPerChild缺省设为0(无限)或较大的数字(例如10000以上)可以使每个子进程处理更多的请求,不会因为不断终止、启动 子进程降低访问效率,但MaxRequestsPerChild设置为0时,如果占用了200~300M内存,即使负载下来时占用的内存也不会减少。

内存 较大的服务器可以设置为0或较大的数字。内存较小的服务器不妨设置成30、50、100,以防内存溢出

下面看一个例子

从网络上搜索到一篇文章,说加大 MaxRequestsPerChild 可以促使增加子进程的复用,从而提高效率。不记得那篇文章是否提到了其使用的 Apache 的 MPM ,版本是 2.0 的没错,反正不是 woker 就是 prefork 了。

我使用的 prefork ,参考那篇文章,将 MaxRequestsPerChild 由 300 调整到了 3000 。

结果,后两天的监控结果是,在网站访问期的高峰期,服务器负荷很重,数据库的并发连接频频超过最高限制。Apache 的并发连接也几乎一直保持在最高,网站访问速度很慢,频繁出现访问超时的问题。

最开始以为是网站访问量过大,达到服务器硬件极限导致的正常现象,不过,手动重启 Apache 后,数据库并发连接迅速降低,之后缓慢增加,一直达到最高并发连接限制,并且很长时间无法减小。

之后,认为是数据库并发连接过高,导致系统负荷过大,而 Apache 过多的 KeepAlice 连接导致数据库的并发连接无法及时释放从而消耗大量系统资源,导致系统负荷过重。

最后,怀疑到 MaxRequestsPerChild 的 300 设置是否合理。

阅 读 Apache 手册关于 MaxRequestsPerChild 的说明后,认为 prefork 下,KeepAlice 开启的情况下,每一个新连接都会导致一个 Apache 子进程开启, MaxRequestsPerChild 设置过大,导致新连接产生新的子进程后,长期 idle ,这样并不一定合理。

根据网站的访问情况,并不需要那么大的 MaxRequestsPerChild ,客户端和 Apache 采用 http 进行连接,网站都是一些大小不大的文件,客户端在和 Apache 服务器数次交互后,就应该完成一次访问了,用户点击网站的频率也不会那么高,所以 MaxRequestsPerChild 不应该设置那么高,而应该设置低一些,以尽快释放数据库连接,尽快回收系统资源,以尽可能快速的满足新的请求的连接需求。

将 MaxRequestsPerChild 重新调整回默认的 300 ,情况有所改观。

最后,就像那句古话所说的,尽信书不如无书,换到互联网上也一样。不能盲目的参考网上的资料,特别是非严格发表的个人经验文档。网上的资料始终都只能作为参考,必须要经过自己的理解,再结合实际情况,进行调整。不然,导致的结果可能是无法预计的。

MaxRequestsPerChild 与 keepalive的关系

MaxRequestsPerChild  表示一个httpd进程最多服务多少个请求,然后自动退出

keepalive 表示连接可以复用

这两个参数看似没有什么关系,可是最近一个偶然的事情却把这两个参数扯到了一起。

这里面的微妙关系就是:MaxRequestsPerChild  在统计服务了多少个请求的时候,把开一次链接作为一个请求。

这意味什么呢?是考虑,如果你的请求都频繁的、不间断的来自一个客户端,这样的话,连接将会被一直被复用,

然后处理过的请求个数将永远不会超过MaxRequestsPerChild,但是可能每次的请求都会带来一定的内存增长,时间长了内存也就永远不会被释放。

所以,如果想 MaxRequestsPerChild  起到回收资源的作用,那么请把keepalive设置成off。

例子

对於 Apache 架设的伺服器,在遇到连线数问题上,以下参数是会考虑微调的

这是预设

ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

不过遇到多个 VirtualHost 与连线变多时,需要适时调整

可能是这样子

ServerLimit 300
MaxClients 300
MaxRequestsPerChild 3000

ServerLimit 与 MaxClients 是针对同时间最大连线数?槎嗌伲?驳褥妒 Apache 程序数量,ps 一下就会有多少个 /usr/sbin/httpd 等

而 MaxRequestsPerChild 则是一个 Apache 子程序可以接受多少个 Request 量,等达到上限了就会被中断砍掉,再重新?生一个新的子程序

Timeout 是不是也要调,预设 120 秒,调 60 好了

以上信息部分来自网络.同时也感谢网友的分享,如对文章有疑问。可联系本人删贴。

时间: 2024-08-04 15:16:04

apache服务器httpd.exe进程占用cpu100%的相关文章

Apache服务器httpd.exe进程占用cpu超过50%的解决方法

httpd.exe进程占用cpu超过50%,关闭掉Apache服务,cpu应用率立刻下降到0.  重新启动Apache又出现占用cpu高的情况.  原因是:httpd.exe和防火墙配置有冲突. 解决方法如下: 1.网上邻居->本地链接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉起用LMhosts查询前的勾. 2.控制面版->windows防火墙->高级标签->本地链接设置->服务的标签里勾选安全

trustedinstaller.exe进程占用内存高

一.现象描述:今天在巡检服务器时,发现一台服务器的内存占用在持续升高,造成应用系统运行缓慢,这种情况以前只在拷贝或备份大量数据时出现过,查看任务管理器中的性能,发现CPU在不断大幅波动,内存占用在持续提升,根据内存进行排序,发现trustedinstaller.exe进程占用了大量的内存空间如下图:二.问题分析:点击右键查找文件所在位置,文件路径为:查看文件的属性信息:可以看到此文件为系统文件.百度此文件信息,得到以下介绍:TrustedInstaller.exe实际上是"Windows Mod

mmdrv.exe进程占用大量内存及其他系统资源

收到阿里云的报警说是服务器进程数过多,然后登陆云监控一看,吓了一跳发现服务器的内存,cpu各种上升,登陆查看任务管理器进程出现好多mmdrv.exe进程,仔细寻觅一番才发现是测试工程师在使用Loadrunner做测试(尼玛也不说一声),原来虚惊一场,以下是自己了解的一些Loadrunner: Load Generator 对系统的要求 如果使用进程方式并发,并发10个虚拟用户,则会在任务管理器中出现10个mmdrv.exe进程: 如果使用线程方式并发,并发10个虚拟用户,只会在任务管理器中出现1

Lsass.exe进程占用大量内存

Lsass进程为系统进程,当发现这个进程占用了大量内存(有的占用了3G的内存),在某些内存不是很大的服务器上内存直接达到90%以上.在发现这些内存出现问题的服务器上主要出现了如下状况: 1.杀毒软件扫描出同样的病毒文件.(看扫描出的病毒文件,怀疑为勒索病毒)2.系统文件lsass.exe的大小变为30.5K(原正常文件大小为30.0K). 处理方式:网上找到的处理方法找到两种,一种是打补丁(Windows 7 SP1 和 Windows Server 2008 R2 SP1 (KB3156417

centos7下安装apache服务器httpd的yum方式安装

转自Clement-Xu的csdn博客 http://blog.csdn.net/clementad/article/details/41620631 Apache在Linux系统中,其实叫“httpd”,可以使用yum来安装. 1.查看httpd包是否可用: # yum list | grep httpd 2.安装Apache # yum install httpd 3.配置ServerName # vi /etc/httpd/conf/httpd.conf 如果没有域名,则:ServerNa

Apache服务器的下载与安装

关于PHP的运行环境搭载,网上文章繁杂,遂自己整理一篇! PHP的运行必然少不了服务器的支持,何为服务器?通俗讲就是在一台计算机上,安装个服务器软件,这台计算机便可以称之为服务器,服务器软件和计算机本身的操作系统是两码事,计算机自身的操作系统可以为linux.Unix.Windows或者MacOS,同时服务软件也可以是Apache(PHP).Tomcat(java/jsp).IIS(asp). PHP主要使用的是Apache服务器,主流的站点搭建组合为LAMP(Linux.Apache.MySQ

Apache服务器最新版下载、安装及配置(win版)

windows 7 64位 Apache 2.4.10 服务器软件 (这个下载过程稍后提到) Apache的下载: 1 登录http://httpd.apache.org/download.cgi 这个地址,找到2.4.10,如下图位置: 2 进入如下界面后,选择第一项ApacheHaus,这是个第三方下载平台,在它的网站下载独立的Apache会是一个压缩包 另外四个中,第二个也是独立的Apache下载地址,另外三个是集成开发环境. 小编选的第一个. 3 在新的界面中,会发现VC9和VC11字样

apache服务器全局配置详解

服务器标识相关指令: ServerName ServerAdmin ServerSignature ServerTokens UseCanonicalName UseCanonicalPhysicalPort ServerAdmin和ServerTokens指令控制有关服务器的哪些信息将出现在服务器生成的文档中(如错误消息).ServerTokens指令设置服务器HTTP响应头字段的值. ServerName.UseCanonicalName. UseCanonicalPhysicalPort指

Apache服务器的安装

我这次环境配置安装的是Apache-2.4.23版本! 1.首先将下载的压缩包解压到你的专门的WAMP环境文件夹,这样以后查找起来比较方便: 2.启动cmd: 如果你和我一样用的Win10,需要右键以管理员身份运行,如图,切换到Apache所在目录. httpd.exe -h 可以查看可以使用的命令. 3.使用httpd.exe -k install安装Apache.这时候会报服务器路径错误: 4.在httpd.conf文件中修改服务器路径. 5.启动Apache:httpd.exe -k st