随记,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