服务器上的一些统计数据查看方法
查看TCP连接状态数:
netstat -n |awk '/tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'
一、查看哪些IP连接本机 netstat -an 二、查看TCP连接数 1)统计80端口连接数 netstat -nat|grep -I ":80 "|wc -l 统计包含80这个数字的端口数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3)统计已连接上的,状态为“established netstat -na|grep ESTABLISHED|wc -l 4)、查出IP地址连接数,可将连接数最多的封掉. netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r --------------------------------------------------------------------------------------------- 1、查看apache当前并发访问数: netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少。 2、查看有多少个进程数: ps aux|grep httpd|wc -l #ps -ef|grep httpd|wc -l 1388 统计httpd进程数,每个请求会启动一个进程,使用于Apache服务器。 表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。 #netstat -nat|grep -i "80"|wc -l 4341 netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。 最终返回的数字就是当前所有80端口的请求总数。 #netstat -na|grep ESTABLISHED|wc -l 376 netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。 最终返回的数字就是当前所有80端口的已建立连接的总数。 netstat -nat||grep ESTABLISHED|wc - 可查看所有建立连接的详细记录 查看Apache的并发请求数及其TCP连接状态: 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的连接中断请求的确认 TCP连接状态详解
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
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*1024*1024*1024/200000 = 8053.06368
约8K个进程,支持2W人同时访问应该是没有问题的(能保证其中8K的人访问很快,其他的可能需要等待1、2秒才能连上,而一旦连上就会很流畅)
控制最大连接数的MaxClients ,因此可以尝试配置为:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 5500
MaxClients 5000
MaxRequestsPerChild 100
注意,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
附:
实时检测HTTPD连接数:
watch -n 1 -d "pgrep httpd|wc -l"
————————————————
版权声明:本文为CSDN博主「西部风情」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/he_jian1/article/details/40787269
netstat命令详解:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
TCP各种状态列表
netstat -nat |awk '{print $6}'
先把状态全都取出来,然后使用uniq -c统计,之后再进行排序:netstat -nat |awk '{print $6}'|sort|uniq -c
最后的命令:netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
分析access.log获得访问前10位的ip地址: awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10
一、查看哪些IP连接本机 netstat -an 二、查看TCP连接数 1)统计80端口连接数 netstat -nat|grep -I ":80 "|wc -l 统计包含80这个数字的端口数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3)统计已连接上的,状态为“established netstat -na|grep ESTABLISHED|wc -l 4)、查出IP地址连接数,可将连接数最多的封掉. netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r --------------------------------------------------------------------------------------------- 1、查看apache当前并发访问数: netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少。 2、查看有多少个进程数: ps aux|grep httpd|wc -l #ps -ef|grep httpd|wc -l 1388 统计httpd进程数,每个请求会启动一个进程,使用于Apache服务器。 表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。 #netstat -nat|grep -i "80"|wc -l 4341 netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。 最终返回的数字就是当前所有80端口的请求总数。 #netstat -na|grep ESTABLISHED|wc -l 376 netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。 最终返回的数字就是当前所有80端口的已建立连接的总数。 netstat -nat||grep ESTABLISHED|wc - 可查看所有建立连接的详细记录 查看Apache的并发请求数及其TCP连接状态: 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的连接中断请求的确认 TCP连接状态详解
CLOSED:无连接是活动 的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉