linux性能排查以及优化方法
一.影响性能的因素
1.系统硬件资源
(1) CPU
多核 或超线程
(2) 内存
物理内存和swap设定
(3) 磁盘I/O
RAID技术/SSD磁盘
(4) 带宽
- 网卡/交换机的选择
- 操作系统双网卡绑定
2.操作系统
(1)内核参数优化
ulimit -n(最大打开文件数)
ulimit -u(最大用户数)
(2)文件系统优化
- ext2:linux 下标准文件系统,无日志记录(inode)功能。
- ext3:在ext2 基础上增加了日志记录功能(inode),仅支持 32000 个子目录
- ex4:ext3 的后续版本,Linux2.6.28 内核开始支持。无限子目录支持,快速 fsck。
- xfs:高性能文件系统,linux3.10 内核开始默认支持。
推荐:读操作频繁,同时小文件众多的应用:首选 ext4 文件系统,接下来依次是 xfs、ext3写操作频繁的应用,首选是 xfs,接下来依次是 ext4 和 ext3对性能要求丌高、数据安全要求丌高的业务,ext3 是比较好的选择
二、性能优化工具
1.cpu 性能评估
vmstat 使用方式 vmstat 5 5 ,每隔5秒采样一次,共采集5次
Procs(进程):
- r: 运行队列中进程数量,如果这个值长期大于cpu个数,说明CPU不足
- b: 等待IO的进程数量,比如磁盘I/O,网络I/O
Memory(内存):
- swpd: 使用虚拟内存大小
- free: 空闲内存大小
- buff: 缓冲去内存大小,一般对块设备的读写需要缓冲
- cache: 用作缓存的内存大小,是存在于cpu和内存之间的缓冲区,存放的是从disk上读取到的数据
Swap:
- si: 每秒从磁盘读入虚拟内存的大小
- so: 每秒虚拟内存写入磁盘的大小
IO:
- bi: 每秒读取的总块数(读磁盘)
- bo: 每秒写入的总块数(写磁盘)
经验参考:bi+bo 参考值为 1000,如果超过 1000,而且 wa值较大,则表示系统磁有问题
system
- in 列表示在某一时间间隔中观测到的每秒设备中断数。
- cs 列表示每秒产生的上下文切换次数。
上面这 2 个值越大,会看到由内核消耗的 CPU 时间会越多。
CPU
- us 列显示了用户进程消耗的 CPU 时间百分比。us 的值比较高时,说明用户进程
- 消耗的 cpu 时间多,但是如果长期大于 50%,就需要考虑优化程序或算法。
根据经验,us+sy的参考值为 80%,如果 us+sy大于 80%说明可能存在 CPU 资源
不足。
- id 列显示了 CPU 处在空闲状态的时间百分比。
- wa 列显示了 IO 等待所占用的 CPU 时间百分比。wa 值越高,说明 IO 等待越严
重,根据经验,wa 的参考值为 20%,如果 wa 超过 20%,说明 IO 等待严重,
引起 IO 等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制
器的带宽瓶颈造成的(主要是块操作)。
2、内存性能评估
free命令是监控 linux 内存的常用命令
使用方法 free -m
-m参数表示以M为单位查看内存的使用情况,一般关注可用内存
可用内存=free +buffer+cache
经验参考:
应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示
3.磁盘性能
iostat是监控linux常用的命令,用法iostat -d 3 5
- Blk_read/s 表示每秒读取的数据块数。
- Blk_wrtn/s 表示每秒写入的数据块数。
- Blk_read 表示读取的所有块数
- Blk_wrtn 表示写入的所有块数。
4.网络性能评估
(1)ping
Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性
主要看是否看是否丢包,或者延迟
(2)traceroute
跟踪网络路由状态,当然每次数据包从同样的出发点(source)到达目的地(destination)走的路径可能会不一样
常用命令:traceroute -p 6111 web.sendcloud.net