文章目录
测试开发面经(七)Linux
1.linux服务器运行速度变慢,谈谈诊断思路和性能评估?
排查顺序 整机top,CPU vmstat,内存 free,硬盘df,磁盘IO,iostat,网络IO,ifsta
整机和内存出错的概率较大。
1.1. 整机 top 和 uptime
top
- 看 %CPU 和 %MEN的使用情况
- 看系统的负载均衡 load average 三个值 1分钟 3分钟 15分钟 系统平均负载值,三个值相加除3乘上 100% 高于60%系统压力较大
- 按 键盘上的 1 可以查看哪一个cpu比较慢
- 退出按 q
uptime
uptime是系统性能命令的精简版
1.2. 查看CPU vmstat
vmstat -n 2 3 ## 每两秒 采样一次 共采样三次
-
主要查看 procs 和 cpu 头尾两个内容
-
procs 下 r 是运行和等待CPU时间片的进程数,b等待资源的进程数
- r 是并行,b是阻塞。
-
cpu下
- us 用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序。
- sy 内核进程消耗的CPU时间百分比
- us+sy 如果大于80%,说明可能存在CPU不足
其他查看CPU的命令,查看额外的信息
mpstat -P ALL 2
每两秒弹出一次 idle 值越高越好,它代表了空闲率 ctrl +z退出
每个进程使用CPU的用量分解信息
pidstat -u 1 -p (进程编号)
## ps -ef 查看所有进程
## 查看指定进程的信息
ps -ef|grep (进程) ##
## 获得1344
pidstat -u 1 -p 1344 ## 对用户每一秒钟采样一次
1.3 内存 free
1.3.1 应用程序可用内存数
最常用的是free -m
free ## 查看内存
free -g #以g为单位查看内存的使用情况
free -m # 以m为内存单位
经验值
设x = 应用程序可用内存/系统物理内存
x> 70% 内存充足, x<20% 内存不足,需要增加内存, 20%< x < 70% 基本够用。
1.3.2 查看额外
pidstat -p 进程号 -r 采样间隔秒数
1.4 硬盘 df
查看磁盘剩余空间
df -h ## -h 代表让人类看懂的方式展现
1.5 磁盘 IO : iostat
数据库在查询数据量比较大的表的时候一般要考虑这样的问题。
-
磁盘I/O性能评估
iostat -xdk 2 3 ### 每两秒钟取样一次 一共取样3次。
util 一秒中有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘。
-
查看额外
pidstat -d 采样时间 -p 进程号
1.6 网络IO ifstat
-
ifstat
ifstat 1
各个网卡的in、out,观察网络负载的情况,程序网络读写是否正常
两种优化方式 程序网络I/O优化 和 增加网络I/O带宽
2.假如生产环境出现CPU占用过高,请谈谈你的分析思路和定位?
-
先用top命令找出cpu占比最高的。
-
ps -ef进一步定位,得知是一个怎么样的后台程序。
-
定位到具体线程或者代码。
- ps -mp 进程 -o THREAD,tid,time
- 参数解释
- -m 显示所有的线程
- -p pid 进程使用cpu的时间
- -o 该参数后是用户自定义格式
-
将需要的线程ID转换为16进制格式(英文小写格式) 5122—> 13ee
printf “%x\n” 有问题的线程ID
-
jstack 进程ID | grep tid(16进制线程ID小写英文)-A60
3. 用过哪些linux命令?
-
查看服务器整机情况的命令 top
top
-
查看系统命令的精简版
uptime
-
查看cpu的命令
vmstat -n 2 3 #每两秒执行一次,执行三次
-
查看内存的命令
free
-
查看硬盘
df -h
-
查看磁盘I/O %util达到100% 说明需要优化
iostat -xdk 2 3
-
查看网络I/O
ifsctat 1
-
创建目录
mkdir abc # 如果父级目录不存在自动创建 mkdir -p a/b/c
-
显示所有进程
ps -e
-
查看ip
ip addr
4.如何查看某个日志的前50行
tail -n -50 /etc/cron ## 文件名
5. 怎么找文件
find . -name "*.c"## 寻找后缀名为.c的文件
find -name "abc"