操作命令大全

1、整机:top,查看整机系统新能

使用top命令的话,重点关注的是 %CPU、%MEM 、load average 三个指标
image.png
在这个命令下,按1的话,可以看到每个CPU的占用情况
uptime:系统性能命令的精简版

2、CPU:vmstat

主要查看CPU(包含但是不限于)
查看额外
查看所有CPU核信息:mpstat -p ALL 2
每个进程使用CPU的用量分解信息:pidstat -u 1 -p 进程编号
命令格式:vmstat -n 2 3
image.png
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位秒),第二个参数是采样的次数

  • procs
    • r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大
    • b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
  • cpu

    • us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
    • sy:内核进程消耗的CPU时间百分比
    • us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足,从上面的图片可以看出,us + sy还没有超过百分80,因此说明蘑菇博客的CPU消耗不是很高
    • id:处于空闲的CPU百分比
    • wa:系统等待IO的CPU时间百分比
    • st:来自于一个虚拟机偷取的CPU时间比

      3、内存:free

  • 应用程序可用内存数:free -m

  • 应用程序可用内存/系统物理内存 > 70% 内存充足
  • 应用程序可用内存/系统物理内存 < 20% 内存不足,需要增加内存
  • 20% < 应用程序可用内存/系统物理内存 < 70%,表示内存基本够用

free -h:以人类能看懂的方式查看物理内存
image.png
free -m:以MB为单位,查看物理内存
image.png
free -g:以GB为单位,查看物理内存

4、硬盘:df

格式:df -h / (-h:human,表示以人类能看到的方式换算)
image.png

  • 硬盘IO:iostat

系统慢有两种原因引起的,一个是CPU高,一个是大量IO操作
格式:iostat -xdk 2 3
image.png
磁盘块设备分布:
rkB /s:每秒读取数据量kB;
wkB/s:每秒写入数据量kB;
svctm I/O:请求的平均服务时间,单位毫秒
await I/O:请求的平均等待时间,单位毫秒,值越小,性能越好
util:一秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;
rkB/s,wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。
svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘

5、网络IO:ifstat

默认本地没有,下载ifstat
image.png

6、生产环境服务器变慢,诊断思路和性能评估

记一次印象深刻的故障?
结合Linux 和 JDK命令一起分析,步骤如下

  • 使用top命令找出CPU占比最高的
  • ps -ef 或者 jps 进一步定位,得知是一个怎么样的后台程序出的问题
  • 定位到具体线程或者代码
    • ps -mp 进程 -o THREAD,tid,time
    • 参数解释
      • -m:显示所有的线程
      • -p:pid进程使用CPU的时间
      • -o:该参数后是用户自定义格式

image.png

  • 将需要的线程ID转换为16进制格式(英文小写格式)
    • printf “%x\n” 有问题的线程ID
  • jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
    • 精准定位到错误的地方

jwu-1601425790533)]

  • 将需要的线程ID转换为16进制格式(英文小写格式)
    • printf “%x\n” 有问题的线程ID
  • jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
    • 精准定位到错误的地方

image.png

7、文件结构

目录 描述
/ 根目录
/bin 做为基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。
/boot Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动装载文件存放位置,如kernels,initrd,grub。一般是一个独立的分区。
/dev 一些必要的设备,声卡、磁盘等。还有如 /dev/null. /dev/console /dev/zero /dev/full 等。
/etc 系统的配置文件存放地. 一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;
/etc/opt:/opt对应的配置文件
/etc/X11:Xwindows系统配置文件
/etc/xml:XML配置文件
……
/home 用户工作目录,和个人配置文件,如个人环境变量等,所有的账号分配一个工作目录。一般是一个独立的分区。
/lib 库文件存放地。bin和sbin需要的库文件。类似windows的DLL。
/media 可拆卸的媒介挂载点,如CD-ROMs、移动硬盘、U盘,系统默认会挂载到这里来。
/mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。
/opt 可选的应用程序包。
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。
/root Root用户的工作目录
/sbin 和bin类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所需要使用得到的。
/tmp 系统的临时文件,一般系统重启不会被保存。
/usr 包含了系统用户工具和程序。
/usr/bin:非必须的普通用户可执行命令
/usr/include:标准头文件
/usr/lib:/usr/bin/ 和 /usr/sbin/的库文件
/usr/sbin:非必须的可执行文件
/usr/src:内核源码
/usr/X11R6:X Window System, Version 11, Release 6.
/srv 该目录存放一些服务启动之后需要提取的数据