随记,linux下的性能优化,分析相关的内容。

ulimit 设置

ulimit -n 要调整为 100000 甚至更大。 命令行下执行 ulimit -n 100000 即可修改。如果不能修改,需要设置 /etc/security/limits.conf,加入

进程最大文件描述符,内存不限制等。

 1* soft nofile 262140
 2* hard nofile 262140
 3  root soft nofile 262140
 4  root hard nofile 262140
 5* soft core unlimited
 6* hard core unlimited
 7  root soft core unlimited
 8  root hard core unlimited
 9* soft memlock unlimited
10* hard memlock unlimited

注意,修改 limits.conf 文件后,需要重启系统或重新登录后生效 (进程要重启下)

获取当前socket连接状态统计信息

1[ubuntu@pygame ~ 06:58:54]$cat /proc/net/sockstat
2sockets: used 660
3TCP: inuse 376 orphan 3 tw 48 alloc 430 mem 60
4UDP: inuse 6 mem 2
5UDPLITE: inuse 0
6RAW: inuse 0
7FRAG: inuse 0 memory 0

sockets: used:已使用的所有协议套接字总量

TCP: inuse:正在使用(正在侦听)的TCP套接字数量。其值≤ netstat –lnt | grep ^tcp | wc –l

TCP: orphan:无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)

TCP: tw:等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l

TCP:alloc(allocated):已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l

TCP:mem:套接字缓冲区使用量(单位不详。用scp实测,速度在4803.9kB/s时:其值=11,netstat –ant 中相应的22端口的Recv-Q=0,Send-Q≈400)

UDP:inuse:正在使用的UDP套接字数量

RAW:

FRAG:使用的IP段数量

timewait 过高,https://zhuanlan.zhihu.com/p/567088021?utm_id=0&wd=&eqid=fd5ad747000267b700000006646566b6

统计当前各种状态的连接的数量的命令

1netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
1[ubuntu@pygame ~ 07:08:51]$netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
2ESTABLISHED 354
3FIN_WAIT1 1
4FIN_WAIT2 9
5TIME_WAIT 31

查看端口范围

1# 允许系统打开的端口范围,用于向外链接的端口范围
2[ubuntu@us02 ~ 08:07:49]$cat /proc/sys/net/ipv4/ip_local_port_range
310000	65535

查看文件打开数

 1lsof | wc -l 
 2
 3lsof -p pid | wc -l  #进程打开的文件数
 4lsof -i :22
 5
 6lsof -c main # 列出指定进程打开的文件 
 7
 8
 9
10lsof xxx.zip  # 指定文件查找 哪些进程占用了该文件 

tcpdump

1#监听icmp包
2sudo tcpdump -i eth0 icmp
3
4
5# 获取8301收发的包
6sudo tcpdump  -v -i lo  tcp port 8301