1,诊运行历史
sar
看最近一天的运行历史信息,包含iowait
sar
-f
/var/log/sa/sa日期
看本月某一天的运行历史信息
2,诊整体资源
top
看当前负载、cpu、内存、进程、用户数等
ps aux
| sort
-nk3
查看CPU占用率最大的进程,显示在最下面一行
ps
aux |
sort -nk4
查看内存占用率最大的进程,显示在最下面一行
3,诊磁盘
iostat
-x
-k
2
这个命令每隔2秒输出一次磁盘io统计信息,这是看数据存储方案最常用命令。
df
-kh
看磁盘空间,磁盘满了?你应该自己立即发现哦
#/sbin/hdparm -t /dev/sda
评估磁盘的读取性能。hdparm可检测、显示与设定IDE或SCSI硬盘的参数。
4,诊网络连接
netstat
-nap
这个命令输出当前所有连接,包括连接所属的进程
ping host或ip
诊断网络是否可达和域名解析是否成功。
/sbin/ethtool
ethX
(ethX表示网卡名如eth0)
检查网卡和网络速度“Speed”,100Mb和1000Mb的带宽差别可大了。
有时要确信两台机器之间的实际带宽,
a,可用scp传一个大文件看看,不过scp传送会受ssh协议的影响,会偏慢一些。
b,用http协议会更真实,在nginx的htdocs目录下放个大文件,到另一台机器用wget下载。
sar
-n
DEV 5
500
诊断网络流量,是否遭到攻击?看网卡读写数据量rxbyt/s和txbyt/s,单位字节。
5,诊文件句柄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
6,诊系统限制
ulimit
-a
看是否可生成core文件、可打开文件句柄数"open files",经常需要修改系统限制。
7,
诊程序系统调用
strace
-p
pid
看程序进程的系统调用函数和返回值,在“显微镜”下看这程序在偷偷干吗?
多线程程序可尝试看pid+1,pid+2后面一般依次是进程创建的多条线程
strace
-p
pid -c
看某个进程id的系统调用函数次数统计,按ctrl
+ c退出并输出统计信息
8,诊通信包
常用命令:
#/usr/sbin/tcpdump -X -s 0 tcp port 8030 -i lo
#/usr/sbintcpdump -n -x -s 0 tcp port 23000 or 23002 or 23003 or 22122 >dump
#/usr/sbin/tcpdump -n -x -s 0 tcp port 7820 and host 192.156.30.100
用root可以在linux上用tcpdump抓包,tcp和udp包都可以抓。
常用选项:
-X
以可读方式显示数据包,适合http、memcached
asccii等明文传输的协议
-x
输出16进制的包内容,Print
each packet
(minus its
link level header)
in hex
-A
ascii码显示
-i
lo 看本机localhost的通信包
-n
不要域名解析,Don’t
convert host addresses
to names.
This can
be used
to avoid
DNS lookups.
-s
设置抓完整的包,Snarf
snaplen bytes
of data from
each packet
rather than the
default of
68...
Setting snaplen
to 0
means use
the required length
to catch
whole packets.
9,诊程序配置文件或启动参数
以上几个命令一看基本知道系统内脏情况,必要时查看具体程序的配置或启动参数,
查看是否连接数、磁盘数、内存数、进程线程数配置不合理。
10,诊日志
看具体程序运行日志、统计日志、耗时日志
vi
/etc/syslog.conf
查看linux系统log在哪个目录
# vi /var/log/messages
查看最近系统运行日志,包括机器重启前后的日志、用户登录日志
dmesg
查看linux启动日志
dmesg|grep
sda
查看启动日志中有关sda这个磁盘分区参数.
11,gdb core文件
如果已生成coredump文件,则gdb
program core.***
有时也可以强制coredump:kill
-s
SIGSEGV pid
|