影响Linux服务器性能的因素有很多,从底层的硬件到操作系统,从网络到上层应用。找到系统硬件和软件资源的平衡点是关键。
1.uptime
10:27:14 up 18 min, 5 users, load average: 10.78, 9.13, 5.42
重点关注load average参数,3个数值分别表示1分钟、5分钟、10分钟的系统负载。如果负载值长时间超过CPU个数的2倍,说明系统处于高负载状态
2.vmstat
procs
r表示运行和等待CPU时间片的进程数,如果这个值长期大于CPU个数,说明CPU性能不足
b表示在等待资源的进程数,等待的资源有I/O或内存交换等
memory
swpd表示切换到内粗交换区的内存数量,单位KB
free表示当前空闲的内存数量,单位KB
buff表示buffers cache的内存数量
cache表示page cached的内存数量
swap
si表示内存进入内存交换区的数量
so表示内存交换区进入内存的数量
#一般情况下,si、so的值都为0。如果si、so的值长期不为0,则系统内存不足
io
bi表示从块设备读取数据总量,单位KB
bo表示写入到块设备的数据总量,单位KB
#bi + bo 的值大于1000,而且wa的值较大,表示系统磁盘IO有问题
system
in表示在谋一时间间隔中观测到的每秒设备中断数
cs表示每秒产生的上下文切换次数,值越大表示内核消耗的CPU时间越多
CPU
us表示用户进程消耗的CPU时间百分比。值过高需考虑优化程序或算法
sy表示内核进程消耗的CPU时间百分比
id表示CPU处在空闲状态时间的百分比
wa表示IO等待所占用的CPU时间百分比,值越高,IO等待越严重
st表示虚拟机占用的时间百分比
#us + sy 的值大于80%,可能会CPU性能不足
3.top
Mem: 总内存 空闲内存 已经使用的内存 用于缓存的内存
Swap: 交换空间总大小 空闲的交换空间 使用的交换内存空间 可用的内存空间
#top命令默认5秒刷新一次
#top命令按m键进入内存模式
4.free 查看内存使用状况
5.iostat 查看磁盘I/O
tps每秒发送到的I/O请求数 kB_read/s每秒读取的数据块数 kB_wrtn/s每秒写入的数据块数
kB_read读取的所有块数 kB_wrtn写入的所有块数
常用参数
-c 仅显示CPU统计信息,与-d互斥
-d 仅显示磁盘统计信息,与-c互斥
-k 以KB为单位显示每秒磁盘请求数,默认单位为块
-p 后面跟具体设备或ALL,用于显示某块设备及系统分区的统计信息
-t 在输出数据时,打印搜集数据的时间
-V 打印版本号
-x 输出扩展信息
6.TCP连接优化
TCP/IP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的TIME_WAIT,不能及时断开的话,会占用大量的端口资源和服务器资源
netstat -an|awk ‘/tcp/ {print $6}‘|sort|uniq -c
5 ESTABLISHED
5 LISTEN
2048 TIME_WAIT
vim /etc/sysctl.conf
#开启重用,允许将TIME_WAIT状态的连接重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1
#开启TCP连接中TIME_WAIT连接的快速回收
net.ipv4.tcp_tw_recycle = 1
#控制同时保持TIME_WAIT套接字的最大数量
net.ipv4.tcp_max_tw_buckets = 1000
sysctl -p
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_tw_buckets = 1000
netstat -an|awk ‘/tcp/ {print $6}‘|sort|uniq -c
6 ESTABLISHED
5 LISTEN
995 TIME_WAIT
TCP状态说明