提升linux下tcp服务器并发连接数限制

1.查看Web服务器(Nginx)的并发请求数及其TCP连接状态:
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 (处理完毕,等待超时结束的请求数)

其他参数说明:

tcp状态:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态

 

2.查看哪些进程使用了swap分区

for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10

 上面的命令会列出进程id,然后用ps aux|grep 进程id 查看具体是什么进程使用了swap分区。

 

3.查看目录下面各个子目录的占用空间大小,并按由大到小排序

du -h --max-depth=1 |grep 'G' |sort -rn

排除某个大目录

sudo du -sh /home/www/* --exclude="/home/www/upload"

 

4.查看Nginx运行进程数
ps -ef | grep nginx | wc -l

5.查看Web服务器进程连接数:
netstat -antp | grep 80 | grep ESTABLISHED -c

 

6.通过命令查看服务器上正在运行的php进程
ps aux|grep php-fpm |wc -l

7.查看已经有多少个php进程用来处理tcp请求
netstat -anopt | grep "php-fpm" | grep "ESTABLISHED" | wc -l

当前正在进行tcp网络数据传输的php进程列表

netstat -anopt | grep "php-fpm" | grep "ESTABLISHED"

 

8.netstat命令统计服务器并发连接数
netstat -anopt | grep "ESTABLISHED" |wc -l

 

9.查看服务器连接列表

netstat -anopt | grep "ESTABLISHED"

netstat -anopt | grep "192.168.0.11:3306" | grep "ESTABLISHED" 查看服务器与其他服务器的正在进行传输数据状态的连接列表

ss -tanp  | grep "ESTAB"

 

10.ss命令统计服务器并发连接数
ss -o state established | wc -l

 

11.如何查看当前占用CPU或内存最多的几个进程

ps aux | sort -k4nr | head -10

命令行输入top回车,然后按下大写M按照memory排序,按下大写P按照CPU排序。

*命令详解: 
1. head:-N可以指定显示的行数,默认显示10行。 
2. ps:参数a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分。ps -aux的输出格式如下:

3. sort -k4nr中(k代表从根据哪一个关键词排序,后面的数字4表示按照第四列排序;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。-k3表示按照cpu占用率排序。

 

12.ss命令列出所有http连接中的连接
ss -o state established '( dport = :http or sport = :http )'

 

13.ss命令显示Sockets摘要
ss -s

 

14.如何查看一个php进程的内存占用情况:
pmap $(pgrep php-fpm|head -1)

15.ps指令查看内存占用情况:
ps -A --sort -rss -o comm,pmem,pcpu|uniq -c |head -15

 

16.分页查看网络链接
netstat -anotp | more

netstat -anotp | grep "ESTABLISHED" | more

查看监听的端口所对应的进程编号

 

sudo lsof -i -P -n | grep LISTEN

 

 

17.倒叙分页查看某个log文件
tac test.log | more

 

18.查看系统路由表
netstat -r

 

19.批量跟踪php进程
ps -ef | grep fpm | awk '{print "-p " $2}' | xargs strace

 

20.查看哪个进程磁盘IO资源占用较高
iotop -oP
命令的含义:只显示有I/O行为的进程

iotop还是非常好用的,能看到哪些进程使用了swap分区

 

21.linux监控网络实时带宽:
先安装iftop
#yum install iftop

命令:
iftop -i eth0 -n

TX:发送总流量
RX:接收总流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去2S 10S 40S的平均流量

 

22、查看某个端口被哪个进程监听

netstat -anp|grep 9000

 

23.查看服务器网卡带宽:

ethtool eth0

显示:
Speed: 1000Mb/s (等于125MB/s)

1B=8bit

bps(bit per second 每秒多少个比特)

 

24.du-查看文件夹大小-并按大小进行排序

 du -sh * | sort -nr

 sudo du -ah --max-depth=1

查看根目录下大于20M的文件列表

sudo find / -type f -size +20M  -print0 | xargs -0 du -h | sort -nr

 

25.文件夹建立软链接(用绝对地址)

 

ln -s 源地址(真实存在的实际地址)  目的地址(符号链接-快捷方式)

 

 

26.查看网卡实时流量

sar -n DEV 1 2

sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量。

sar –n DEV  1 2

命令后面1 2 意思是:每一秒钟取1次值,取2次。

DEV显示网络接口信息

另外,-n参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含义如下:

  • DEV显示网络接口信息。
  • EDEV显示关于网络错误的统计数据。
  • NFS统计活动的NFS客户端的信息。
  • NFSD统计NFS服务器的信息
  • SOCK显示套接字信息
  • ALL显示所有5个开关
[sre@CDVM-213017031 ~]$ sar -n DEV 1 2
Linux 2.6.32-431.el6.x86_64 (CDVM-213017031)     05/04/2017     _x86_64_    (4 CPU)

08:05:30 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:05:31 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:05:31 PM      eth0   1788.00   1923.00    930.47    335.60      0.00      0.00      0.00

08:05:31 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:05:32 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:05:32 PM      eth0   1387.00   1469.00    652.12    256.98      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0   1587.50   1696.00    791.29    296.29      0.00      0.00      0.00

参数说明:

  • IFACE:LAN接口
  • rxpck/s:每秒钟接收的数据包
  • txpck/s:每秒钟发送的数据包
  • rxbyt/s:每秒钟接收的字节数
  • txbyt/s:每秒钟发送的字节数
  • rxcmp/s:每秒钟接收的压缩数据包
  • txcmp/s:每秒钟发送的压缩数据包
  • rxmcst/s:每秒钟接收的多播数据包
  • rxerr/s:每秒钟接收的坏数据包
  • txerr/s:每秒钟发送的坏数据包
  • coll/s:每秒冲突数
  • rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
  • txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
  • txcarr/s:发送数据包时,每秒载波错误数
  • rxfram/s:每秒接收数据包的帧对齐错误数
  • rxfifo/s:接收的数据包每秒FIFO过速的错误数
  • txfifo/s:发送的数据包每秒FIFO过速的错误数