如何查看apache最大连接数的连接数和当前连接数

Apache httpd的最大连接数公道设置 -
- ITeye技术网站
博客分类:
新设备的办事器,带宽 是2M ,apache httpd上传的速度比速度大很多,一向不解原因。
并且,apache httpd 链接数一旦跨越200以上,网页打开速度就超等慢。希罕愁闷。莫非本身买了办事器还不如虚拟空间的!熬煎中,于是上彀搜刮了一下,成果如下:固然经过批改,如同有一些变更了,然则如同apache httpd链接数一跨越200网页打开速度依然很慢,莫非真的是带宽太低吗?设置了apache 缓存 也按下面的设置了 apache httpd 最大链接数。愁闷中! 新买了办事器,有一个网站在耳目数增多,接见时很慢。初步认为是办事器带宽太低,但经反复测试,一旦连接上,络续点击同一个页面上不合的链接,都能敏捷打开,这种现象就是申明apache最大连接数已经满了,新的访客只能列队守候有余暇的链接,而若是一旦连接上,在keeyalive 的存活时候内(KeepAliveTimeout,默认5秒)都不消从头打开连接,是以解决的办法就是加大apache的最大连接数。 1.在哪里设置? apache 2.24,应用默认设备,默认最大连接数是150 起首在httpd.conf中加载httpd-mpm.conf设备(去掉前面的注释): # Server-pool management (MPM specific) Include conf/extra/httpd-mpm.conf 可见的MPM设备在Apache2.2/conf/extra/httpd-mpm.conf,但里面按照httpd的工作模式分了很多块,哪一部才是当前httpd的工作模式呢?可经由过程履行 apachectl -l 来查看: Compiled in modules: core.c prefork.c http_core.c mod_so.c 所以批改连接数就在Apache2.2/conf/extra/httpd-mpm.conf这个文件了,打开它就找到prefork模式的默认设备是: &IfModule mpm_prefork_module& StartServers
5 MinSpareServers
5 MaxSpareServers
10 MaxClients
150 MaxRequestsPerChild
0 &/IfModule&
prefork 把握过程在最初建树“StartServers”个子过程后,为了满足MinSpareServers设置的须要创建一个过程,守候一秒钟,持续创建两个,再守候一秒钟,持续创建四个……如此按指数级增长创建的过程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。
这种模式可以不必在恳求到来时再产生新的过程,从而减小了体系开销以增长机能。MaxSpareServers设置了最大的余暇过程数,若是余暇过程数大于这个值,Apache会主动kill掉一些多余过程。这个值不要设得过大,但若是设的值比MinSpareServers小,Apache会主动把其调剂为 MinSpareServers+1。若是站点负载较大,可推敲同时加大MinSpareServers和MaxSpareServers。
MaxRequestsPerChild设置的是每个子过程可处理惩罚的恳求数。每个子过程在处理惩罚了“MaxRequestsPerChild”个恳求后将主动烧毁。0意味着无穷,即子过程永不烧毁。 固然缺省设为0可以使每个子过程处理惩罚更多的恳求,但若是设成非零值也有两点首要的益处: 1、可防止不测的内存泄漏。 2、在办事器负载降落的时侯会主动削减子过程数。是以,可按照办事器的负载来调剂这个值。MaxClients是这些指令中最为首要的一个,设定的是 Apache可以同时处理惩罚的恳求,是对Apache机能影响最大的参数。其缺省值150是远远不敷的,若是恳求总数已达到这个值(可经由过程ps -ef|grep httpd|wc -l来确认),那么后面的恳求就要列队,直到某个已处理惩罚恳求完毕。这就是体系资料还剩下很多而HTTP接见却很慢的首要原因。固然理论上这个值越大,可以处理惩罚的恳求就越多,但Apache默认的限制不克不及大于256。ServerLimit指令无须重编译Apache就可以加大MaxClients。 重视,固然经由过程设置ServerLimit,我们可以把MaxClients加得很大,然则往往会拔苗助长,体系耗光所有内存。以我手头的一台办事器为例:内存2G,每个apache过程消费大约0.5%(可经由过程ps aux来确认)的内存,也就是10M,如许,理论上这台办事器最多跑200个apache过程就会耗光体系所有内存,所以,设置MaxClients要稳重。 2.要加到几许? 连接数理论被骗然是支撑越大越好,但要在办事器的才能局限内,这跟办事器的CPU、内存、带宽等都有关系。 查看当前的连接数可以用: ps aux | grep httpd | wc -l 或: pgrep httpd|wc -l 策画httpd占用内存的均匀数: ps aux|grep -v grep|awk ‘/httpd/{sum+=¥6;n++};END{print sum/n}’ 因为根蒂根基都是静态页面,CPU消费很低,每过程占用内存也不算多,大约200K。 办事器内存有2G,除去常规启动的办事大约须要500M(保守估计),还剩1.5G可用,那么理论上可以支撑1.5*24/200000 =
约8K个过程,支撑2W人同时接见应当是没有题目的(能包管此中8K的人接见很快,其他的可能须要守候1、2秒才干连上,而一旦连上就会很流畅) 把握最大连接数的MaxClients ,是以可以测验测验设备为: &IfModule mpm_prefork_module& StartServers
5 MinSpareServers
5 MaxSpareServers
10 ServerLimit
5500 MaxClients
5000 MaxRequestsPerChild
100 &/IfModule& 重视,MaxClients默认最大为250,若要跨越这个值就要显式设置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小于MaxClients,不然重启httpd时会有提示。 重启httpd后,经由过程反复履行pgrep httpd|wc -l 来调查连接数,可以看到连接数在达到MaxClients的设值后不再增长,但此时接见网站也很流畅,那就不消贪婪再设置更高的值了,不然今后若是网站接见突增不警惕就会耗光办事器内存,可按照今后接见压力趋势及内存的占用变更再逐渐调剂,直到找到一个最优的设置值。 (MaxRequestsPerChild不克不及设置为0,可能会因内存泄漏导致办事器溃散) 更佳最大值策画的公式: apache_max_process_with_good_perfermance & (total_hardware_memory / apache_memory_per_process ) * 2 apache_max_process = apache_max_process_with_good_perfermance * 1.5
文献出处:/bw/jishuzhongxin/Webjishu/243.html
浏览: 199926 次
来自: 广州
很好的东西,顶你,分享查看: 5630|回复: 15
apache的最大连接数如何设置
论坛徽章:0
现在公司网站经常出现一个错误:
503Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
在网上查了原因,说是apache的最大连接数过少引起的。
我的web服务是把apache2.0和tomcat5.5整合。
关于修改apache最大连接数的问题,我不太明白,在网上找了很多,基本上类似:
======================================
修改httpd.conf文件
&IfModule prefork.c&
StartServers& && &8
MinSpareServers& & 5
MaxSpareServers&&20
MaxClients& && &150
MaxRequestsPerChild&&1000
&/IfModule&
MaxClients& && &150
ServerLimit& && &&&2000
MaxClients& && &&&2000
======================================
但是我的httpd.conf中并没有这一段,并且prefork.c的文件我也没有找到,是否要重新编译文件,如何修改apache的最大连接数到现在也是一头雾水。
各位有没有可以帮忙的,给提个建议也好,谢谢!
求职 : 认证徽章论坛徽章:184
怎么会没有 ?
论坛徽章:0
恩,确实没有,这个我不会看错的,我甚至把httpd.conf下载下来,仔细的查了一遍,确实没啊
求职 : 认证徽章论坛徽章:184
论坛徽章:0
论坛徽章:0
我在前面有说明apache和tomcat的版本,谢谢!
求职 : 认证徽章论坛徽章:184
最初谁配置的,生产系统?
没有配置mpm_prefork_module模块?
求职 : 认证徽章论坛徽章:184
有这个httpd-mpm.conf ?可能单独配置的
论坛徽章:0
关于这个问题,我想补充一点
在茫然无助的情况下,我翻看各种文件,感觉日志文件有点大了,就把日志文件备份了一份,然后清空了日志文件,整个系统一下子就正常多了。
但并没有彻底的解决问题,这种清空偶尔仍然还会出现。
求职 : 认证徽章论坛徽章:184
还有可能配置了worker
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号Apache查看连接数和限制当前的连接数 - 推酷
Apache查看连接数和限制当前的连接数
起因:线上的一台服务器,最近总是出现 访问 很慢的情况发生,点击一个链接要2秒钟以上才能打开,按照我们对于访问人数的估计,服务器应该不至于响应这么慢,从而需要针对这个问题进行分析,来解决网站访问过慢。
1、首先,在页面访问变慢情况发生时,使用 top 命令查看了服务器的负载情况,发现负载并不高,初步估计不是程序的问题。
2、然后,查看了线程中的 httpd 的数量, ps -aux | grep httpd | wc -l 发现,线程数已经达到了 apache 设置的最大值。由此断定是网站访问人数过多造成了访问过慢。
3、为了验证,查看了连接数和当前的连接数,分别是
netstat -ant | grep $ip:80 | wc -l
netstat -ant | grep $ip:80 | grep EST | wc -l
发现果然,连接数特别多,远远超过我们的估计值。
4、刚开始的时候,对于服务器的 MPM 配置方式不是特别的熟悉,认为修改服务器配置可以解决问题。主要的配置部分包括 prefork 模式 或者 work 模式的配置,下面是一些简单的介绍。
prefork 模式:
以 prefork 模式工作的 apache 的默认配置:
&IfModule mpm_prefork_module&
ServerLimit&&&&&&&&&&&& 2000
StartServers&&&&&&&&&&&&&& 5&&& #指定服务器启动时建立的子进程数量
MinSpareServers&&&&&&&&&&& 5&&& #指定空闲子进程的最小数量
MaxSpareServers&&&&&&&&&& 10&&& #指定空闲子进程的最大数量
MaxClients&&&&&&&&&&&&&& 150&&& #指定同一时间客户端最大接入请求的数量(单个进程并发线程数),任何超过该限制的请求都将进入等候队列,一旦一个连接被释放,队列中的请求将得到服务
MaxRequestsPerChild&&&&&&& 0&&& #指定每个子进程在其生存周期内允许伺服的最大请求数量,默认为10000,0表示子进程永远不结束
&/IfModule&
prefork 控制进程在最初建立“StartServers”个子进程后,为了满足 MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足 MinSpareServers设置的值为止。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
MaxSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比 MinSpareServers小,Apache会自动把其调整为 MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和MaxSpareServers。
MaxClients是这些指令中最为重要的一个,设定的是 Apache可以同时处理的请求,是对Apache性能影响最大的参数。其缺省值150是远远不够的,如果请求总数已达到这个值(可通过ps -ef|grep httpd|wc -l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。虽然理论上这个值越大,可以 处理的请求就越多,但Apache默认的限制不能大于256。在 apache2 中通过ServerLimit指令无须重编译Apache就可以加大MaxClients。
虽然通过设置ServerLimit,我们可以把MaxClients加得很大,但是往往会适得其反,系统耗光所有内存。以一台服务器为例:内存2G,每 个apache进程消耗大约0.5%(可通过ps aux来确认)的内存,也就是10M,这样,理论上这台服务器最多跑200个apache进程就会耗光系统所有内存,所以,设置MaxClients要慎 重。
prefork的工作原理:
控制进程在最初建立StartServers个子进程后, 为了满足MinSpareServers设置的需要,创建一个进程,等待一秒钟,继续创建第二个,等待一秒钟,继而创建四个,如此按指数级增加创建的进程 数,最多达到每秒32个,直到满足MinSpareServers设置的值为止,这也就是预派生(prefork)的由来。这种模式可以使得不必在请求到 来时再产生新的进程,从而减小了系统开销以增加性能。
axSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill某些多余进程。这个值一般不要设的过大,但如果设的比 MinSpareServers小,Apache会自动把它调整为MinSpareServers+1。如果站点负载较大的话,可考虑同时加大 MinSpareServers和MaxSpareServers。
MaxRequestsPerChild设置的是每个子进程可 以处理的请求数。每个子进程在处理了MaxRequestsPerChild个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使 每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:
1、可防止意外的内存卸漏;
2、在服务器负载下降的时侯会自动减少子进程数。
因此,可根据服务器的负载来调整这个值,如果非零的话,笔者认为10000左右是比较合适的。事实上这个值对Apache的性能影响不是很大。
MaxClients 是这些指令中最为重要的一个,它设定的就是Apache可以同时处理的请求,这是对Apache性能影响最大的参数.在我个人看来,缺省的150是远远不 够的,如果请求总数已达到这个值(可通过ps –ef|grep httpd|wc –l来确认),那么下面的请求就要排队,直到某个已处理请求完毕。这就是为什么系统资源还剩下很多,而http访问却很慢的主要原因。系统管理员可以根据 硬件配置和负载情况来动态调整这个值,虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制是不能大于256。如果把这个值设为大于 256那么Apache将无法起动。事实上,256对于负载稍重的站点也是很不够的。在Apache1.3中这是个硬限制,如果要加大这个值,必须在 configure前手工修改源代码树下的src/include/httpd.h,查找256,会发现#define HARD_SERVER_LIMIT 256这行,把256改为你要增大的值如4000,然后重新编译Apache即可。我想这个方法稍有些经验的Apache系统管理员都知道,不过我相信在 Apache2.0中知道如何加大这个值的人就不会太多了。
在Apache2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。下面是笔者的prefork配置段。
以下为引用的内容:
&IfModule prefork.c&
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
&/IfModule&
BTW: ServerLimit的最大值是20000,这对于大多数站点是足够了,但如果你一定要再加大的话,那么这个值位于源代码树下的server/mpm/prefork/prefork.c中。里面的
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
这两行就对应着MaxClients和ServerLimit的限制值。但我相信很少有人可以用到20000的并发连接数。
worker 模式:
以 worker 模式工作的 apache 的默认配置为:
&IfModule mpm_worker_module&
StartServers&&&&&&&&&&&&&& 2
MaxClients&&&&&&&&&&&&&& 150
MinSpareThreads&&&&&&&&&& 25
MaxSpareThreads&&&&&&&&&& 75
ThreadsPerChild&&&&&&&&&& 25
MaxRequestsPerChild&&&&&&& 0
&/IfModule&
Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,
MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients 设置了同时连入的clients最大总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。
MinSpareThreads和 MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。
ThreadsPerChild是worker MPM中与性能相关最密切的指令。
ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。
Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild 值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时 也需要显式声明ServerLimit(最大值是20000)。需要注意的是,如果显式声明了ServerLimit,那么它乘以 ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则 Apache将会自动调节到一个相应值。
服务器的apache采用的是 prefork 的工作模式,对 MaxClients 进行了相应的调整,发现服务启动后很短时间,连接数就能够达到最大。
5、后来想到需要查看用户都是访问的那些页面,将配置中的 access_log 打开,发现85%以上的访问都是直接访问的资源文件,由此判定,用户可能使用了多线程的下载工具,或者这些资源遭受了盗链。
6、找到了问题所在,进行解决也就比较好办了。想到了两个方法:
A、对单个IP进行连接的线程限制,不允许多线程连接资源。
对于IP限制,我采用了 mod_limitipconn 这个模块。这个模块的好处是比较简单,缺点是不能够针对单独的文件夹或者文件进行设置,而且不支持虚拟主机。
在 apache 中安装了这个模块后,在配置文件中添加如下几段就可以生效了:
ExtendedStatus On
& IfModule mod_limitipconn.c &
& Location / &&& # 所有虚拟主机的/目录
MaxConnPerIP 3&&&& # 每IP只允许3个并发连接
NoIPLimit image/* # 对图片不做IP限制
& /Location &
& Location /&
& # 所有主机的/mp3目录
MaxConnPerIP 1&&&&&&&& # 每IP只允许一个连接请求
OnlyIPLimit audio/mpeg video&&& # 该限制只对视频和音频格式的文件
& /Location &
& /IfModule &
B、添加URL重写,防止盗链。
防止盗链,一个重要的方法就是判断请求的 refer,但是如果使用一些浏览器发出请求的时候将 refer 去掉,或者伪装,这个办法就无能为力了。但是貌似还有更高级的方法,还是可以实现这个功能。
安装apache的 mod_rewrite 模块后,在apache配置文件中添加
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteRule .*/.(gif|jpg|swf)$ /about/nolink.png [R,NC]
这样盗链的请求会被重定向到一个错误页面,从而减少下载带给服务器的压力。
转载:http://blog.csdn.net/j2eeweiwei/article/details/6276913
Tagged:java,server
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
请问怎么查看tomcat或apache的当前的并发数和连接数
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 mysql 查看当前连接数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信