apache下查看进程tcp

下面是apache的运行模式的几种:

先查看apache的运行模式,查看命令:
httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
查看apache的运行模式
httpd -M |grep prefork #这个是运行模式
查看apache配置进程数
cat /usr/local/apache2/conf/extra/httpd-mpm.conf #这里面配置
<IfModule mpm_prefork_module>
    ServerLimit         1024    #服务器apache最大的进程总数(参考,实际看MaxClients)
    StartServers         10     #apache启动时候默认开始的进程数
    MinSpareServers      10     #最小的闲置进程数
    MaxSpareServers      30     #最大的闲置进程数
    MaxClients          1024    #客户端最大的进程总数
    MaxRequestsPerChild  300    #  每个进程处理的最多请求数
</IfModule>
查看tcp连接数查看tcp连接数
统计80端口连接数统计80端口连接数
netstat -nat|grep -i "80"|wc -l
netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。 最终返回的数字就是当前所有80端口的请求总数。
统计httpd协议连接数或多少个进程数统计httpd协议连接数或多少个进程数
ps -ef|grep httpd|wc -l
查看apache当前并发访问数:
netstat -an | grep ESTABLISHED | wc -l
查看Apache的并发请求数及其TCP连接状态:Linux命令:查看Apache的并发请求数及其TCP连接状态:Linux命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 8947 等待足够的时间以确保远程TCP接收到连接中断请求的确认
FIN_WAIT1 15 等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN_WAIT2 1 从远程TCP等待连接中断请求
ESTABLISHED 55 代表一个打开的连接
SYN_RECV 21 再收到和发送一个连接请求后等待对方对连接请求的确认
CLOSING 2 没有任何连接状态
LAST_ACK 4 等待原来的发向远程TCP的连接中断请求的确认
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
TCP连接状态详解

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

客户端TCP状态迁移: CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务器TCP状态迁移:

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
客户端TCP状态迁移: CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务器TCP状态迁移:服务器TCP状态迁移:
CLOSED->LISTEN->SYN_RECEIVE->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSEDCLOSED->LISTEN->SYN_RECEIVE->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSEDCLOSED->LISTEN->SYN_RECEIVE->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSEDCLOSED->LISTEN->SYN_RECEIVE->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
apache进程数优化
连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU、内存、带宽等都有关系。
1. 查看当前的连接数可以用:1. 查看当前的连接数可以用:
ps aux | grep 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.510241024*1024/200000 = 8053.06368
约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时会有提示。

注:以上是我是个人学习了解东西,若有问题请指出谢谢!

Alan博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本博客使用laravel5.5 搭建 © 2016-2018 blog.taobaoroom.cn 版权所有 ICP证:粤ICP备16047280号
  • 联系邮箱:1030283554@qq.com