1.操作系统监控命令: top ,在 top 命令中,输入数字 1 展示每个核的CPU使用情况

   

2.进程监控命令: ps    

   ps -ef 显示所有进程信息,连同命令行
   ps -ef|grep ssh ps 与grep 常用组合用法,查找特定进程
   ps aux列出目前所有的正在内存当中的程序

3.系统平均负载监控命令: uptime    

   uptime 显示系统平均负载

	uptime
	08:21:34 up 36 min,  2 users,  load average: 0.00, 0.00, 0.00
	#当前服务器时间:    08:21:34
	#当前服务器运行时长  36 min
	#当前用户数          2 users
	#当前的负载均衡      load average  0.00, 0.00, 0.00,分别取1min,5min,15min的均值

4.内存监控命令: free    

   free -m 以MB为单位显示系统内存的使用情况,同理,也可以使用-k、-g等其他的单位显示
   free 命令从两个维度统计了内存的使用情况
  第一行Mem:从操作系统角度统计内存的total、used、free、buffers、cached
  第二行-/+buffers:从应用程序角度统计内存的total、used、free、buffers、cached
  buffer和cache:两者都是Linux下的缓存机制,其中buffer为写操作的缓存,cache为读操作的缓存
  swap:交换空间,磁盘上的一块空间,当系统内存不足时,会使用交换空间

  

5.磁盘IO监控命令: iostat

  命令: iostat -x -k 1
  -x:展示磁盘的扩展信息
  -k:以k为单位展示磁盘数据
  1:每1秒刷新一次  

  展示结果
   rrqm/s :每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合    并Merge);
   wrqm/s :每秒这个设备相关的写入请求有多少被Merge了。
   rsec/s :每秒读取的扇区数;
   wsec/s :每秒写入的扇区数。
   rKB/s :The number of read requests that were issued to the device per second;
   wKB/s :The number of write requests that were issued to the device per second;
   avgrq-sz :平均请求扇区的大小
   avgqu-sz :是平均请求队列的长度。毫无疑问,队列长度越短越好。
   await :每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
   svctm :表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等 待太长, 系统上运行的应用程序将变慢。
   %util :在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。
  一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

 

  

6.磁盘空间监控命令: df   

  df命令可以查看当前系统磁盘空间的使用情况,命令: df -h

  磁盘速度测试命令:dd if=/dev/zero of=/export/ddtest bs=8k count=1000000 oflag=direct

  

7.sar监控命令: sar    

   sar -n DEV 1 1 查看网络接口信息
   sar 1 1 CPU和IOWAIT统计状态

	默认监控: sar 1 1     //  CPU和IOWAIT统计状态 
	(1) sar -b 1 1        // IO传送速率
	(2) sar -B 1 1        // 页交换速率
	(3) sar -c 1 1        // 进程创建的速率
	(4) sar -d 1 1        // 块设备的活跃信息
	(5) sar -n DEV 1 1    // 网路设备的状态信息
	(6) sar -n SOCK 1 1   // SOCK的使用情况
	(7) sar -n ALL 1 1    // 所有的网络状态信息
	(8) sar -P ALL 1 1    // 每颗CPU的使用状态信息和IOWAIT统计状态 
	(9) sar -q 1 1        // 队列的长度(等待运行的进程数)和负载的状态
	(10) sar -r 1 1      // 内存和swap空间使用情况
	(11) sar -R 1 1       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
	(12) sar -u 1 1       // CPU的使用情况和IOWAIT信息(同默认监控)
	(13) sar -v 1 1       // inode, file and other kernel tablesd的状态信息
	(14) sar -w 1 1       // 每秒上下文交换的数目
	(15) sar -W 1 1       // SWAP交换的统计信息(监控状态同iostat 的si so)
	(16) sar -x 2906 1 1  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
	(17) sar -y 1 1       // TTY设备的活动状态
	(18) 将输出到文件(-o)和读取记录信息(-f)

8.综合监控工具: vmstat

  vmstat命令综合了CPU、进程、内存、磁盘IO等信息
  命令: vmstat 2 10 ,每2秒刷新一次,一共打印10次

     

   r :表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,
  一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
   b :表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
   swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
   free :空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
   buff :Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M。
   cache :cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的
  性能,当程序使用内存时,buffer/cached会很快地被使用。)
   si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
   so :每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
   bi :块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上
  看过可以达到140000/s,磁盘写入速度差不多140M每秒
   bo :块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
   in :每秒CPU的中断次数,包括时间中断。
   cs :每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx
  这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是
  比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分
  浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
   us :用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
   sy :系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
   id :空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
   wt :等待IO CPU时间。

9.超级监控工具: dstat

  dstat是一个全能监控工具,整合了CPU、内存、磁盘、网络等几乎所有的监控项,支持实时刷新
  需安装:yum install -y dstat
  监控命令: dstat -tcmnd --disk-util --output sys-10.csv

         

10.支持数据存储的监控工具: nmon

  nmon是IBM公司开发的Linux性能监控工具,可以实时展示系统性能情况,也可以将监控数据写入文件中,并使用nmon分析器做数据展示
  命令: cd /export/minitor/nmon       ./nmon -ft -s 5 -c 1000     sz  ****.nmon   使用本地nmon表格分析nmon文件
  Nmon文件需要关注的标签页
  1、cpu_all
  2、diskbusy
  3、net
  4、mem 

           

11.实时性能监控工具: spotlight

  Spotlight是一个实时展示Linux资源使用的可视化工具
  1、安装spotlight(常规安装,略)
  2、在被监控的Linux内,新建一个spotlight监控用户useradd xxx,修改密码:passwd xxx
  3、在windows下打开spotlight工具,新建监控链接即可开始监控

  

12.JDK自带工具: jvisualvm

   1.需要在 tomcat/bin/cataout.sh 中第二行增加参数设置(不能换行),可以改变内存大小设置或去掉:

    JAVA_OPTS="-server -Xms512m -Xmx1024m -Dcom.sun.management.jmxremote= -Djava.rmi.server.hostname=192.168.50.48 -Dcom.sun.management.jmxremote.port=10089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  2.重启tomcat后,返回本机,cmd进入DOS命令窗口后,输入jvisualvm回车,即可打开jvisualvm图形化界面;

  3.新建远程连接-->新建JMX连接,输入设置的端口10086,确认--->打开监控;

    

 jar包形式启动的项目加参数:

 

自定义启动shell脚本里加参数:找到java -jar pinter.jar &,在java后面加参数

   

 

posted on 2019-12-25 17:06  淡然~~浅笑  阅读(2042)  评论(0编辑  收藏  举报