在实际使用apache+mod_jk+tomcat(jboss) 架构的过程中,时常碰到对各处连接池数设置含义不清楚,设置错误,导致故障。本文集中讲述连接池相关内容:
一、apache
在 apache 2.0 中,引入了影响性能的最核心模块:MPM(multi‐processing‐modules), MPM包含多种工作模式,MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool} 。最常使用的 worker 模型为例。它支持多线程和多进程混合工作。
在httpd.conf中时常有如下配置:
<IfModule worker.c> ServerLimit 3000 ThreadLimit 128 MaxClients 2048 StartServers 7 ThreadsPerChild 128 MinSpareThreads 75 MaxSpareThreads 250 MaxRequestsPerChild 10000 </IfModule>
指令说明:
- ServerLimit:服务器允许配置的进程数上限。
- ThreadLimit:每个子进程可配置的线程数上限。
- MaxClients:客户端最大请求数量(最大线程数)。
- StartServers:服务器启动时建立的子进程数量。
- ThreadsPerChild:每个子进程建立的线程数。
- MinSpareThreads:最小空闲线程数,默认值是"75"。
- MaxSpareThreads:设置最大空闲线程数。默认值是"250"。
- MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到MaxRequestsPerChild的限制后,子进程将会结束。
配置原则:
- ServerLimit:
- 只有当MaxClients和ThreadsPerChild > 16 (默认值16) ,需要配置该值。
- Apache在编译时内部有一个硬限制"ServerLimit 20000"(对于preforkMPM为"ServerLimit 200000")。你不能超越这个限制
- ServerLimit<=MaxClients 并且MaxClients<=ThreadsPerChild.
- restart方式重启动将不会生效
- ThreadLimit:
- 该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。(如果将ThreadLimit设置成一个高出ThreadsPerChild实际需要很多的值,将会有过多的共享内存被分配)
- 对于mpm_winnt,ThreadLimit的默认值是1920;对于其他MPM这个值是64。
- Apache在编译时内部有一个硬性的限制"ThreadLimit 20000"(对于mpm_winnt是"ThreadLimit 15000"),你不能超越这个限制。
- restart方式重启动将不会生效。
- MaxClients:
- 默认值 是"400",16 (ServerLimit)乘以25(ThreadsPerChild)的结果
- 增加MaxClients的时候,必须同时增加 ServerLimit或则ThreadsPerChild的值
- MaxClients <= ServerLimit * ThreadsPerChild,并且MaxClients必须是ThreadsPerChild的倍数
- StartServers:
worker默认值是"3"
- StartServers<ServerLimit
- ThreadsPerChild:
- 对于mpm_winnt,ThreadsPerChild的默认值是64;对于其他MPM是25。
- ThreadLimit >= ThreadsPerChild
- MaxClients <= ServerLimit * ThreadsPerChild,
- MinSpareThreads:
- 这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。
- MinSpareThreads<ThreadsPerChild.
- MaxSpareThreads:
- 这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程
- MaxSpareThreads>=MinSpareThreads+ThreadsPerChild.
- MaxRequestsPerChild:
- 如果MaxRequestsPerChild为"0",子进程将永远不会结束
- 将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;
给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
二、 Mod_Jk
worker.localnode.connection_pool_size=128 worker.localnode.connection_pool_minsize=25 worker.localnode.connection_pool_timeout=600
它实际上是创建了一个连接到 AJP 后端的连接池。通常情况下,这个值和 apache 连接池的
ThreadsPerChild 一致就可以了。如果这个值不设置,JK 将自动读取配置,设置为和ThreadsPerChild 一致。
当大并发量存在时,即便Apache的JK组件与tomcat保持足够多数量的连接,也不能有效避免HTTP 503错误,因为在大量的请求被转发到tomcat时,tomcat无法相应那么多请求,于是抛出了503。需要在Connector的地方配置maxThreads参数,将最大线程数调大。
三、TOMCAT
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="1000" URIEncoding="UTF-8" /> <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="99" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />说明:
相关推荐
Jboss7 +apache 2.2.25+mod_jk 的配置集群 Jboss7 在windows下还没有看到有这块的文档 所以把写好的放上去和大家一志分享
网上讲的jboss集群大多出自同一人之手,各种复制粘贴,搞的我不得不自己研究,改进.
本资源包含了文章Apache2.2.x + Tomcat6.x + JK 集群配置,http://blog.csdn.net/qq396229783/article/details/74295797里面所用到的软件配置
Jboss6+mod_jk+apache2.2集群配置,mod_jk方式的分布式集群方案。
tomcat、jboss 连接池配置,详细步骤,准确代码,让你实践中学会这两种服务器的连接池配置
实现两个节点之间的无缝负载均衡,实时session复制,当一台机子的jboss的服务跨掉以后,自动会切换到另外一台服务器上面,对于用户的使用没有丝毫的影响。
英文文档 简单易懂 详细介绍了如何借助Apache2 mod_jk 1.2.x作为负载均衡搭建JBOSS集群 细分每个搭建步骤 文档内附带相关软件下载地址
Jboss集群配置是根据网上的一些资料和自己配置过程中遇到的问题修改而成
公司需要做 Apache Tomcat集群,研究了数日,终配置成功,把研究结果共享一下。 最下面的红色字体[在一台机器上启动两个JBoss服务器],不同机器端口和路径不同,可根据自己情况适当修改。
发展过程 2007年之前 apache + mod_weblogic + Weblogic 2008年 apache + mod_weblogic + jboss(4.05) ...apache(2.0.61) + mod_jk(1.2.26) + jboss(4.05) 2010年低 apache(2.2) + mod_proxy + jetty(7.2.0)
apache+jboss集群参考,参考介绍集群实现办法
redhat5+jboss4.2.3+apache2.2.19+mod_jk.so集群配置 文档中包括了jkd jboss apache mod_jk 的分别安装步骤,对linux不熟悉的人绝对有所帮助。 我把他搞定中途遇到了很多问题才写了这个文档,相对来说比较完善了,...
JBoss_AS7+JBoss_Tools+Eclipse3.7集成介绍
Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置
使用Apache、mod_jk为负载均衡器的jboss集群详细配置
Apache Tomcat JBOSS Nginx区别
Eclipse3_3+Jboss4_2+Lomboz3_3环境安装配置
jboss配置Oracle连接池.doc
apache 集成 jboss 或者 tomcat 必须文件,window下专用
Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 Memcached分布式缓存 Nginx+Tomcat 动静分离 Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载...