cd /home/server/tomcat1/bin/
./startup.sh & tail -f ../logs/catalina.out
1、Top命令是Linux下一个实时的、交互式的,对操作系统整体监控的命令,可以对CPU、内存、进程监控。
是Linux下最常用的监控命令--------
top - 05:10:14 up 1 day, 49 min, 2 users, load average: 0.18, 0.12, 0.08
Tasks: 96 total, 1 running, 95 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.1 us, 14.9 sy, 0.0 ni, 84.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863220 total, 783504 free, 650448 used, 429268 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1030496 avail Mem
Tasks: 96 total, 1 running, 95 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.1 us, 14.9 sy, 0.0 ni, 84.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863220 total, 783504 free, 650448 used, 429268 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1030496 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2023 root 20 0 1693908 99376 13704 S 22.0 5.3 1:09.61 java
2066 root 20 0 161880 2204 1576 R 0.3 0.1 0:00.19 top
load average: 0.06, 0.60, 0.48 CPU指标-系统负载,活跃进程数即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。(不要超过CPU核数,超过 CPU有排队有性能问题)
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核、系统空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比,如果值高的化,磁盘有问题
0.0% hi 中断
0.0% si 软中断
最后两行为内存信息。内容如下:
Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换分区总量 磁盘上的一块区域
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
%CPU 只某个进程所有CPU的占比,会超过100%
%MEM 内存
RES 真实占用的内存大小
按大写M会按照内存排序 按大写P按CPU排序
2.[root@snailquan bin]# free -m ---------------按兆的方式显示
buff/cache内存指标,缓存;buff: 缓存写的东西 cache:存的文件
查看内存要把free+buff+cache
3.iostat 查看磁盘-----
iostat命令可以查看当前机器磁盘io的数据
命令:iostat -x -k 1
-x:展示磁盘的扩展信息
-k:以k为单位展示磁盘数据
1:每1秒刷新一次
展示结果
sda :第一块磁盘
util:磁盘IO使用率,单位%,反映磁盘的繁忙程度,上限100%
r/s:每秒读请求数
w/s:每秒写请求数
rkb:每秒写磁盘字节数
wkb:每秒读磁盘字节数
4、df命令可以查看当前系统磁盘空间的使用情况
命令:df -h
磁盘速度测试
命令:dd if=/dev/zero of=/export/ddtest bs=8k count=1000000 oflag=direct
5M/s 过低磁盘故障,几十M/s正常
5、vmstat命令综合了CPU、进程、内存、磁盘IO等信息
命令:vmstat 1
r队列, b阻塞; swap: si -input 内存->swap so- output swap->内存;
io:磁盘IO bi:块Input bo-块-output
6、dstat是一个全能监控工具,整合了CPU、内存、磁盘、网络等几乎所有的监控项,支持实时刷新;比较实用(服务器允许按照的情况)
dstat需要先进行安装
yum install -y dstat
使用命令:dstat -tcdlmnsygr
7、可以计算某个时间段的平均值,用于计算压测期间的资源消耗情况
支持数据存储的监控工具-nmon
nmon是IBM公司开发的Linux性能监控工具,可以实时展示系统性能情况,也可以将监控数据写入文件中,并使用nmon分析器做数据展示
Nmon文件需要关注的标签页
1、cpu_all
2、diskbusy
3、net
4、mem
需要手动安装nmon脚本,想监控哪台机器就把脚本放哪台机器上
/export 目录下创建一个monitor文件夹,并上传脚本
chmod +x nmon
./nmon 运行程序进入界面
按哪个快捷键就展示哪个信息
网卡的上限 ethtool eth0,局域网 一般是125M, 1000b/8,
到达上限的话,带宽到达瓶颈;
ethtool eth0 能看网卡的配置,支持最大的带宽是多少
将监控数据写入到文件中 ./nmon -ft -s 10 -c 10
ft存文件 s秒 c 统计次数 10
在当前文件夹下生成snailquan_190801_0453.nmon一个文件,运行结束后下载到桌面
使用nmon analyser v34a.xls进行分析(只能在excel中用, wps用不了)
cpu 就看cpu all 磁盘就看diskbusy(看sda), MEM , NET
nmon收集的数据都是操作系统级别的数据
所以我们要将第一行的数据计算出第二行的数据;(used-buffers-cached)/total; 或者 (total-free-buffers-cached)/total
mem中计算内存使用率公式=(B2-F2-K2-N2)/B2 内存总数-free-cache-buffer /内存总数
8、实时性能监控工具-spotlight, 不懂技术可以看这个,压测用的不多。
Spotlight是一个实时展示Linux资源使用的可视化工具
1、安装spotlight(常规安装,略)
2、在被监控的Linux内,新建一个spotlight监控用户useradd xxx,修改密码:passwd xxx
3、在windows下打开spotlight工具,新建监控链接即可开始监控
注册码 : 1-47853-30212-46224-95327 www.serials.ws
被监控的linux服务器上创建个账户
创建好之后双击就进来了
-------------------------------------应用程序监控---------------------------------------------------------------------
8、Java线程监控
线程的五种状态
* 新建:new
* 运行:runnable
* 等待:waitting(无限期等待),timed waitting(限期等待)
* 阻塞:blocked
* 结束:terminated
线程的两种监控方法
一,jvisualvm,图形界面的方式(windows下使用,监控linux服务器)
只能监控1个tomcat, 要监控多个,需要把每一个tomcat都加上下面的参数;
监控之前先对jvm加监控参数,在tomcat的bin目录下,catalina.sh文件中,第二行添加:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.0.0.9"
修改完Kill -9 tomcat进程;并重启tomcat
注:10086改成任意一个未占用端口即可, 10.0.0.9改成服务器本机的ip
netstat -an|grep 10086查看端口是否已被监听
lsof -i:10086 展示当前端口号被哪个进程监听
1-改port
2-改hostname为本机ip
3、电脑cmd输入jvisualvm, 若无法调用需要将jdk的bin目录加到系统环境变量的path中
windows 命令行启动:
远程->右键->添加远程主机->ip地址
可以直接抓堆dump
二,jstack pid(进程号):命令行方式
jstack 18373 > a.log 将结果重定向到a.log文件中;拷贝到windows里用notepadd++看比较方便查找;watting 大部分都是框架里的。
"Mytesting..." prio=10 tid=0xb7545800 nid=0x15cf waiting for monitor entry [0xb4ba8000..0xb4ba9070]
java.lang.Thread.State: BLOCKED (on object monitor)
at ThreadStatusTest.blocked(ThreadStatusTest.java:53)
- waiting to lock <0x8bd6a238> (a java.lang.Object)
at BlockedStatus.run(ThreadStatusTest.java:73)
at java.lang.Thread.run(Thread.java:619)
三、练习小例子