3 |
iotop |
查看磁盘IO读写(yum install iotop安装) |
4 |
iotop -o |
直接查看比较高的磁盘读写程序 |
1、请求访问量
cat access.log | cut -f1 -d " " |sort | uniq -c | sort -k 1 -n -r | head -10
2、查看最耗时的页面
cat access.log | sort -k 2 -n -r | head -10
3、curl 来抓取网页和web的服务器监控
-x:表示通过代理网络去访问后面的地址
-XGET:表示get请求
-X POST表示post请求
curl localhost:9999/api/daizhige/article -X POST -H "Content-Type:application/json" -d '"title":"comewords","content":"articleContent"'
curl -x xz.proxy.cnsuning.com:8080 -I http://hermespre-test.hualife.cc:8080/api/suningInsurance?sign=123323123
--即设置代理又是post请求方式
curl -x xz.proxy.cnsuning.com:8080 http://hermespre-test.hualife.cc:8080/api/suningInsurance?sign=123323123 -POST -d "213"
也可以自定义设置请求头header
-H:curl -H 'Host:10.12.11.10' -H 'Accept-Language:es' -H 'Cookie:ID=1234' -v http://www.baidu.com 注:-H 可以多次使用
可以使用简单的options来简化常用的请求头,如下:
-A (or --user-agent): 设置 "User-Agent" 字段.
-b (or --cookie): 设置 "Cookie" 字段.
-e (or --referer): 设置 "Referer" 字段.
wget 用于下载一些资源以及模拟请求
①、--header 的使用:$>wget -d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" --header="Referer: http://xmodulo.com/" --header="Accept-Encoding: compress, gzip" http://www.google.com/
二、也可以通过代理去下载
4、利用time和dd命令来测试磁盘的写入性能
sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=20000)"
5、利用hdparm命令来测试磁盘的读性能
hdparm -tT /dev/设备号
6、利用fdisk来查看磁盘详情
fdisk -l
7、使用iostat 来查看磁盘的IO读写性能情况
iostat -p (加设备)
iostat 3 表示每3秒执行
8、数据包捕获功能【抓包】
1、登陆后台服务器,确定实际使用的网卡;
2、执行 tcpdump -i eth0 -c 2000 -w eth0.cap
例如我截取本机(192.168.31.147)和主机114.114.114.114之间的数据
tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114
还有截取全部进入服务器的数据可以使用以下的格式
tcpdump -n -i eth0 dst 192.168.31.147
或者服务器有多个IP 可以使用参数
tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157
指定ip和端口
tcpdump -i eth0 -nn net 192.100.4.116 and port 1521
默认:tcpdump -i eth0 -nn
netstat -n | awk '/^tcp/' 连接数
导出tcpdump:tcpdump -i eth0 host 192.100.4.118 -w /tcpdump.cap
9、查看TCP连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看端口被谁占用
netstat -antp | fgrep 2181
10、查看线程的状态统计
grep java.lang.Thread.State 11.txt |awk '{print $2$3$4$5}' |sort |uniq -c
查看java进程下的所有线程
top -p 2208 并且输入‘H’即可查看线程统计情况
11、使用jmap来查询jvm堆的信息
a。查询jvm内存中的经过GC后还存活的对象:jmap -histo:live 23484|head -10 (head -10 排序查看,不加也行)
b。查询jvm的信息,以及新生代已使用百分比,以及老生代的已使用:jmap -heap pid
c。jmap -dump:live,format=b,file=heap.hprof 23484 来生成内存对象的head文件 用eclipse的MAT插件来查看
12、使用jstat 来实时查看jvm内存的使用情况,以及monior gc的次数以及full gc的次数和时间,由此也能看出gc是否频繁
jstat -gc 23484 5000:每5秒执行打印情况,展示的字节
jstat -gcutil 23484 5000:展示的是百分比
13、使用jstack 来查看线程的执行情况,多用于造成cpu飙高的情况下
printf %x\n 子线程 将10进制转为16进制
printf %d\n 子线程 将16进制转为10进制
jstack -l pid > 11.txt
13-1、使用jinfo可以在一个正在运行的JVM中动态的开启GC日志功能
jinfo -flag +PrintGCDetails 12278
jinfo -flag +PrintGC 12278
关闭如下:
jinfo -flag -PrintGCDetails 12278
jinfo -flag -PrintGC 12278
14、ab用于压力测试
ab -c 10 -n 200 url c表示10个并发。n表示200个请求
15、性能排查工具:pidstat -p 22367 1 3 -u -t
-u:代表对cpu使用率的监控
参数1 3:表示每秒采样一次,一共三次
-t:将监控级别细化到线程
1、PID - 被监控的任务的进程号
2、%usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。
3、%system - 这个任务在系统层使用时的cpu使用率。
4、%guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。
5、%CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量。
6、CPU - 正在运行这个任务的处理器编号。
7、Command - 这个任务的命令名称。
16、检查之前先查看NFS文件服务和rpcbind服务是否已在运行,service nfs status/service rpcbind status
安装之后,修改/etc/export文件,添加需要挂载的路径
检查可以挂载的文件系统:showmount -e 192.168.102.91系统会列出可以挂载的文件
mount -t nfs 192.168.102.91:/usr/local/apache-activemq-5.7.0/data/kahadb /data/activemq
就将91上目录/usr/local/apache-activemq-5.7.0/data/kahadb挂载到本机目录/data/activemq上
最后将该目录自动挂载,避免系统重启后需手动挂载。自动挂载即修改配置文件/etc/fstab
17、基本脚本
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m/h # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
grep管道命令详解:还有个与之类似的是zgrep命令 当时zgrep可以直接查.gz的压缩文件
$>grep -5 'parttern' inputfile //打印匹配行的前后5行
$>grep -C 5 'parttern' inputfile //打印匹配行的前后5行
$>grep -A 5 'parttern' inputfile //打印匹配行的后5行
$>grep -B 5 'parttern' inputfile //打印匹配行的前5行
$>grep -H 'ccc' inputfile //为每一匹配项打印文件名
$>zgrep '检索内容' /目录 /文件 .gz 或者.log (当日)
$>zgrep 内容1 /opt/logs/ios/ios_system-20200520.*.log | zgrep '内容2' |grep '内容3' //多个条件筛选日志
网络
# traceroute # 路由跟踪
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -rn # 查看主机路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
#tracert www.google.com 路由跟踪命令 traceroute/tracert 显示路由到目的地址所经过的路由器,可以诊断网络阻塞
netstat -anlp|grep ESTABLISHED |grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n 10 查看ESTABLISHED Top10
查询TCP连接数
netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
进程
ps aux|grep java # 查看所有进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# cat /etc/passwd # 查看所有用户信息
username:password:User ID:Group ID:comment:home directory:shell
用户名:密码:用户id:用户所在组id:备注:用户家目录:shell命令所在目录
cat /etc/passwd|grep 用户名 #用于查找某个用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服