77范文网 - 专业文章范例文档资料分享平台

apache2的worker工作模式配置及MaxClients不足问题解决

来源:网络收集 时间:2020-09-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

解决apache死掉问题,实时报错:

#tail -f /usr/local/apache2/logs/error_log

[Wed Feb 23 11:16:07 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting

Apache版本:

# /usr/local/apache2/bin/apachectl -v Server version: Apache/2.2.15 (Unix) Server built: Jun 9 2010 12:23:01

# vi /usr/local/apache2/conf/httpd.conf 去掉如下注释:

# Server-pool management (MPM specific) Include conf/extra/httpd-mpm.conf

修改:

# vi /usr/local/apache2/conf/extra/httpd-mpm.conf

StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25

MaxRequestsPerChild 0 为:

# 配置都采用默认值,可以去掉 ServerLimit 16 ThreadLimit 64 StartServers 3 MinSpareThreads 25 MaxSpareThreads 250 # 应用特殊配置值

MaxClients 1024 ThreadsPerChild 64

说明:

ServerLimit 16

# ServerLimit和ThreadLimit 需要配置其它worker指令前面 # default 16

ThreadLimit 64

# 每个子进程可配置的线程数上限, ThreadsPerChild的配值不能超过ThreadLimit,否则启动报警告并自动调整ThreadPerChild # default 64

StartServers 3

# 服务器启动时建立的子进程数, 子进程在启动时建立这些线程后就不再建立新的线程了 # default 3

MinSpareThreads 25

# worker的默认值是\。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。 # default 75

MaxSpareThreads 250

# Apache将按照\其大于等于MinSpareThreads加上ThreadsPerChild的和\自动修正你设置的值

# 75<64+25,所以MaxSpareThreads被重新设置为64+25=89 # default 250

MaxClients 1024

# MaxClients指令设置了允许同时伺服的最大接入请求数量

# 对于混合型的MPM默认值是16(ServerLimit)乘以64(ThreadsPerChild)的结果

ThreadsPerChild 64

# 每个子进程建立的线程数,要设在超过64,需求相应配置ThreadLimit # default 25

关系总结:

MaxClient <= ThreadsPerChild *ServerLimit (能被 ThreadsPerChild 整除) ThreadsPerChild ≯ThreadLimit

引用:

http://benni82.javaeye.com/?show_full=true

apache worker配置

===========================================================

# 服务器在断定请求失败前等待的秒数

# TimeOut指令用于设置Apache等待以下三种事件的时间长度: # 1. 接受一个GET请求耗费的总时间。

# 2. POST或PUT请求时,接受两个TCP包之间的时间。 # 3. 应答时TCP包传输中两个ACK包之间的时间。 # default 300 Timeout 15 KeepAlive On

# 一个持久链接中允许的最大请求数量 # default 100

MaxKeepAliveRequests 200

# 持久链接中服务器在两次请求之间等待的秒数

# Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。 # default 5

KeepAliveTimeout 10

# 每个子进程在其生存期内允许伺服的最大请求数量,到达MaxRequestsPerChild的限制后,子进程将会结束

# 对于KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。 MaxRequestsPerChild 20000

# ServerLimit & ThreadLimit 需要配置其它worker指令前面 # default 16

ServerLimit 16

# 每个子进程可配置的线程数上限, ThreadsPerChild的配值不能超过ThreadLimit,否则启动报警告并自动调整ThreadPerChild # default 64

ThreadLimit 64

# 服务器启动时建立的子进程数, 子进程在启动时建立这些线程后就不再建立新的线程了

# default 3

StartServers 5

# MaxClients指令设置了允许同时伺服的最大接入请求数量

# 对于混合型的MPM默认值是16(ServerLimit)乘以64(ThreadsPerChild)的结果

MaxClients 1024

# worker的默认值是\。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。 # default 75

MinSpareThreads 25

# Apache将按照\其大于等于MinSpareThreads加上ThreadsPerChild的和\自动修正你设置的值

# 75<64+25,所以MaxSpareThreads被重新设置为64+25=89 # default 250

MaxSpareThreads 75

# 每个子进程建立的线程数,要设在超过64,需求相应配置ThreadLimit # default 25

ThreadsPerChild 64

ThreadLimit实际是用来限制 ThreadsPerChild的取值,即 ThreadsPerChild必须不能大于 ThreadLimit。ThreadLimit的默认值是64,所以如果你的ThreadsPerChild=128,启动apache就给你一个“WARNING: ThreadsPerChild of 128 exceeds ThreadLimit value of 64 threads, lowering ThreadsPerChild to 64. To increase, please see the ThreadLimit directive.“ ,自动把 ThreadsPerChild降级为64。如果你非要 ThreadsPerChild=128,必须添加 ThreadLimit=N(N大于等于128),ThreadLimit还必须配在其他指令前面,否则无效。

另外MaxClient的值必须<= ThreadsPerChild *ServerLimit,且能被 ThreadsPerChild 整除,默认值是 ThreadsPerChild *ServerLimit ( ThreadsPerChild 表示实际使用值,可能被 lowering了 )

MPM混合模式下,每个子进程根据实际ThreadsPerChild值一次性创建好所有线程,且在子进程活动期间不会再创建或销毁线程,线程要么工作要么空闲。

如果线程数不够,apache创建一个子进程批量增加可用线程。

上面配置MaxSpareThreads=75是有问题的,因为MinSpareThreads=25, ThreadsPerChild=64,当一个进程下的 64线程中,有超过

ThreadsPerChild-MinSpareThreads=64-25=39已经投入工作,此时空闲线程数小于 MinSpareThreads,是必要创建更多的空闲线程以保持空闲线程在

[MinSpareThreads, MaxSpareThreads]范围内。新进程会创建ThreadsPerChild个线程 。 那么此时就有

MinSpareThreads+ThreadsPerChild = 25+64 = 89 个空闲线程,如果

MaxSpareThreads < 89,就需要销毁空闲线程,刚创建又销毁显然是不合理的。 所以apache启动时会把MaxSpareThreads调整为>= MinSpareThreads+ThreadsPerChild的值 。

另外StartServers被设置为5,启动初始创建6个进程,1个主进程(控制进程)和5个子进程,每个子进程初始化64个线程,5*64=320空闲线程,大于MaxSpareThreads(89),所以有4个子进程很快被杀掉,启动apache时可以用“ps -ux“观察到,

比较合理的worker配置

Java代码

1.

2. # 配置都采用默认值,可以去掉 3. ServerLimit 16 4. ThreadLimit 64 5. StartServers 3 6. MinSpareThreads 25 7. MaxSpareThreads 250 8. # 应用特殊配置值 9. MaxClients 1024 10.ThreadsPerChild 64 11.

worker MPM:混合的多线程多进程 由于使用线程来处理请求,可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说医药卫生apache2的worker工作模式配置及MaxClients不足问题解决在线全文阅读。

apache2的worker工作模式配置及MaxClients不足问题解决.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/yiyao/1150561.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: