A. 如何查看linux并发连接数
1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}
netstat -n|grep ^tcp|awk '{print $NF}'|sort -nr|uniq -c
或者:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}
返回结果一般如下:
LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30
ESTABLISHED 1597 (正常数据传输状态)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)
其他参数说明:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
2、查看Nginx运行进程数
ps -ef | grep nginx | wc -l
返回的数字就是nginx的运行进程数,如果是apache则执行
ps -ef | grep httpd | wc -l
3、查看Web服务器进程连接数:
netstat -antp | grep 80 | grep ESTABLISHED -c
B. 如何测试服务器支持的最大并发连接数
更改服务端的I/O模型吧,这明显是服务端设计的问题。
你这样设计上线使用的话,服务器开销太大了(主要是线程切换的开销)。
//--------------------
Listen(socket,5),跟这个有一定关系。
int listen(int sockfd, int backlog); 第二个参数是你监听客户端的最大个数,如连接到主机上的客户端超过其数listen则会返回一个错误代号。
backlog你可以设置大一点,如100之类的。
建议使用I/O模型吧,不要使用建立新线程来处理。
(你使用建立新线程的话,会发现每个进程所建立的最大线程数量是有一个限制的)
C. Windows服务器怎么查看iis并发连接数
如果要查看IIS连接数,最简单方便的方法是通过“网站统计”来查看,“网站统计”的当前在线人数可以认为是当前IIS连接数。然而,“网站统计”的当前在线人数统计时间较长,一般为10分钟或15分钟,再加上统计技术及统计机制的问题,从而会产生或多或少的统计误差。
如果要想知道确切的当前网站IIS连接数的话,最有效的方法是通过windows自带的系统监视器来查看。这正是本文要介绍的方法。
一、运行-->输入“perfmon.msc”
二、在“系统监视器”图表区域里点击右键,然后点“添加计数器”
四、设置完毕
这样,你就可以在“系统监视器”图表区域中看到一条曲线(此曲线你可以设置其颜色和宽度等参数),它就是网站的IIS连接数曲线图了,如图一黄色曲线所示。
需要说明的是,windows系统监视器显示的是即时IIS并发连接数,并非如“网站统计”那里的15分钟内访问人数,所以你会发现IIS并发连接数并不会太多。