1,监控CPU
top命令:
top - 15:12:13 up 170 days, 13 min, 1 user, load average: 0.00, 0.00, 0.00 用户空间| 系统空间 |用户进程内改变过优先级的进程占用| 空闲 ||等待输入输 |硬件中断 ||软件中断 | 被窃取的时间 进程ID| 用户名| 进程优先级| NICE值| 虚拟内存大小| 共享内存| 常驻内存| 进程状态| CPU占用率| 内存占用率| CPU时间使用总计| 命令 PID USER PR NI VIRT SHR RES S %CPU %MEM TIME+ COMMAND |
top命令交互式参数
排序命令
M --- 根据%MEM 排序,可以方便的找出内存占用最多的程序
P --- 根据%CPU 排序,可以找出当前谁占用CPU最多
T --- 根据TIME+ 排序,可以找出历史以来谁占用CPU最多
其他命令
c --- 显示COMMAND 全路径和参数
k --- 直接杀死进程,这个命令使得杀进程老 方便了
f --- 指出要显示那几列
o --- 调整显示的列的顺序
1 --- 显示多个CPU各自的状态(默认是显示summary的CPU状态)
指标:
CPU的利用率:us+sy之和 ,利用率达到100%(如果有多个CPU可以超过100%)则利用率最好。
CPU的load: 如果是1核的CPU,LOAD=1达到最大利用率,超过就是超负荷。如果是8核的服务器,load=8就是最大利用率。所以要看机器是几个核的。
2,监控进程所占内存
free
yajun@yajun-VirtualBox:~$ free -m total used free shared buffers cached Mem: 1384 471 913 0 42 209 -/+ buffers/cache: 219 1165 Swap: 1308 0 1308 |
-m 以MB为单位显示
-g 以GB为单位显示
-k 以KB为单位显示
指标:看内存占用大小咯。若使用swap了,那么系统肯定慢了。
关系:total = used + free
第2行:
-/+ buffers/cache的意思相当于:
-buffers/cache 的内存数:1397032 (等于第1行的 used – buffers – cached)
+buffers/cache 的内存数: 2752124 (等于第1行的 free + buffers + cached)
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三行单独针对交换分区, 就不用再说了.
3,监控硬盘容量
---------------------------- df 查看挂载点使用情况 ---------------------------------
查看所有挂在点的使用情况:
df -h
查看/home目录所在的挂在点使用情况(可以看出这个目录下还能装多少东西):
df -h /home
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda1 29G 2.2G 25G 9% /
-------------------------- du 查看文件或文件夹使用情况 ---------------------------
查看home目录占用了多少大小的硬盘容量:
du -sh /home
50M /home
4,监控文件句柄
lsof
命令 进程ID|用户名|文件描述|类型|设备|大小|结点|名称 类型 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME |
初始打开每个应用程序时,都具有三个文件描述符,从 0 到 2,分别表示标准输入、输出和错误流。正因为如此,大多数应用程序所打开的文件的 FD 都是从 3 开始。
FD内容:
cwd current working directory;
Lnn library references (AIX);
err FD information error (see NAME column);
jld jail directory (FreeBSD);
ltx shared library text (code and data);
Mxx hex memory-mapped type number xx.
m86 DOS Merge mapped file;
mem memory-mapped file;
mmap memory-mapped device;
pd parent directory;
rtd root directory;
tr kernel trace file (OpenBSD);
txt program text (code and data);
v86 VP/ix mapped file;
常见用法:
lsof -p 进程号 看某个进程号打开了哪些文件
lsof /home/yajun/bin/.swp 看这个文件被哪些进程打开
误删除某个文件以后,希望找回:
lsof -p 还未关闭的vim进程号
vim 11989 yajun 0u CHR 136,3 0t0 6 /dev/pts/3
vim 11989 yajun 1u CHR 136,3 0t0 6 /dev/pts/3
vim 11989 yajun 2u CHR 136,3 0t0 6 /dev/pts/3
vim 11989 yajun 3u REG 8,1 12288 6946875 /home/yajun/bin/.hello.txt.swp (deleted)
cat /proc/11989/fd/3
就可以显示出刚刚编辑过的内容了:
3210#"! Utp�ad�hfsdljfklsdjafklajsdklfjasdljflasdjklf;'w
查看占用22端口的进程:
lsof -i :22
查看与哪台及其有连接:
root@yjhexy:/home/yajun/work/ezra# lsof -i @10.20.156.47
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chrome 6123 yajun 83u IPv4 3219817 0t0 TCP yjhexy:37125->ccbu-156-47:50030 (ESTABLISHED)
chrome 6123 yajun 126u IPv4 3219818 0t0 TCP yjhexy:37126->ccbu-156-47:50030 (ESTABLISHED)
java 10862 root 61u IPv6 2853076 0t0 TCP yjhexy:50412->ccbu-156-47:9000 (ESTABLISHED)
java 11002 root 52u IPv6 2855916 0t0 TCP yjhexy:41308->ccbu-156-47:9021 (ESTABLISHED)
查看系统的最大打开文件数:
more /proc/sys/fs/file-max
查看每个进程最多能打开多少文件数
ulimit -a
5,监控TPC连接
netstat
常见用法:
查看TCP连接的LISTEN的端口:netstat -tl
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost.localdoma:ipp *:* LISTEN
tcp6 0 0 yajun-VirtualBox:ipp [::]:* LISTEN
其中如果是TCP连接的话,会有TCP协议中相关的State
ESTABLISHED
The socket has an established connection.
SYN_SENT
The socket is actively attempting to establish a connection.
SYN_RECV
A connection request has been received from the network.
FIN_WAIT1
The socket is closed, and the connection is shutting down.
FIN_WAIT2
Connection is closed, and the socket is waiting for a shutdown from the remote end.
TIME_WAIT
The socket is waiting after close to handle packets still in the network.
CLOSE The socket is not being used.
CLOSE_WAIT
The remote end has shut down, waiting for the socket to close.
LAST_ACK
The remote end has shut down, and the socket is closed. Waiting for acknowledgement.
LISTEN The socket is listening for incoming connections. Such sockets are not included in the output unless you specify the --listening (-l) or
--all (-a) option.
CLOSING
Both sockets are shut down but we still don't have all our data sent.
UNKNOWN
The state of the socket is unknown.
下面图片引用自http://en.wikipedia.org/wiki/File:Tcp_state_diagram_fixed.svg
如果具有root权限的话,开可以产看占用该端口的进程使用-p 参数
比如:
sudo netstat -ap | grep ssh
tcp 0 0 *:ssh *:* LISTEN 737/sshd
tcp 0 48 yjhexy:ssh 10.22.1.117:52234 ESTABLISHED 14381/sshd: yajun [
tcp6 0 0 [::]:ssh [::]:* LISTEN 737/sshd
可以得知 14381 这个进程正是yajun用户通过ssh 方式登入本机,如果希望把他T出去,就可以kill -9 14381
6,监控IO 状态
查看IO吞吐量 yajun@yjhexy:~$ iostat -d -k 1 10 () 查看IO设备使用率( %util ),响应时间(await) yajun@yjhexy:~$ iostat -d -x -k 1 10
查看cpu状态 yajun@yjhexy:~$ iostat -c 1 10 |
7,综合监控
yajun@yjhexy:~$ vmstat 2 5(每隔2秒钟收集一次,共收集5次) procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 99784 1225376 174252 1561236 0 2 67 91 418 122 6 5 87 2 0 0 99784 1225368 174252 1561236 0 0 0 0 112 186 0 0 100 0 0 0 99784 1225368 174260 1561236 0 0 0 8 119 198 0 0 99 1 0 0 99784 1225368 174260 1561236 0 0 0 0 115 197 0 0 100 0 |
查看 从启动依赖有多少进程被fork了:
vmstat -f
设定显示大小块时使用的单位
mvstat -Sm (以MB为单位显示)
显示IO摘要信息
vmstat -D
性能指标:
CPU的饱和度:procs中的r这一列的数目 / CPU的个数即CPU的饱和度,任何非0值都会导致机器性能的逐渐下降。
CPU的利用率:us+sy之和 ,利用率达到100%(如果有多个CPU可以超过100%)则利用率最好。