Web系统性能调优

系统很慢,是我们对性能出现瓶颈的直观感受。那么怎样诊断一个变慢了的系统的性能瓶颈呢?

CPU

1.top

可以查看CPU的整体使用率和空闲率

top -n 1只显示一次,查看进程消耗的CPU占比。

2. 查看CPU的数量/proc/cpuinfo和lscpu

3. 查看感兴趣进程的更多信息ps -lf3001

4. 查看此进程机器父进程的更多信息ps -o state,user,pid,ppid,nice,%cpu,cmd -p 3000,3001

5. 查看更多ps --forest -eouser,pid,ppid,%cpu,cmd

Memory:

free查看内存使用情况

查看 out of memory killer情况。journalctl | grep "Out of memory"。

检查某个特定进程的 memory 使用情况ps -eouser,pid,ppid,%mem,rss,vsize,comm | grep PROCESS_NAME

vmstat-n 10 5

Disk:

1.iostat-x 10 3查看是否有I/O带宽平并。跟vmstat一样,不要看第一次输出,那是从开机到目前的平均值,从第二次输出看起。

iowait值很高,CPU在等I/O,当然这并不意味着就是在等磁盘。

r/s ,w/s 便是没秒完成的读和写,await表示请求等待的平均时间(毫秒),%util表示此设备出来I/O请求用的CPU百分比。

2.mount命令查看挂载的磁盘

3. 如果找不到可以用ls -la /dev/dm-1

find -L /dev -samefile/dev/dm-1寻找所有链接到 .dev.dm-1的链接。

4.lvdisplay显示逻辑卷,用pvdisplay查看逻辑卷背后的物理卷。

5. 查找处于Uninterruptible sleep的进程,因为其可能占用很多I/O。ps -elf | grep " D "。再次用ps -elf --forest获得用户启动的处于D状态的进程的详细信息。

6. 查看相关进程机器父进程使用了多少I/O,cat /proc/PROCESS_ID/io

7.ps -elf | grep PROCESS_NAME查看进程id是否变化,查看此进程是否是一个存活时间很短的进程。

8. 用iotop来查看那些进程使用I/O最多。

Network:

ifstat跟vmstat和iostat一样,都需要从第二个输出看。

历史统计数据比较

/etc/cron.d/sysstat设置了sysstat定时运行的计划,/etc/sysstat/sysstat中可以查看到日志文件保存的目录。/var/log/sa/和/var/log/sysstat/分别是RHEL7和Ubuntu 16.04的默认log存放路径。

sar也可以查看iostat, top 以及vmstat查看到的信息。

CPU:

sar -u,查看某一天(7日)的用sar -f /var/log/sysstat/sa07 -u。

Memory:

sar -r

Disk:

sar -d -p

Network:

sar -n DEV


你可能感兴趣的:(Web系统性能调优)