1 HPUX速查命令
1.1 CPU
CPU方面的告警,使用以下工具命令保留现场
1) 实时性能数据使用glance(c查看单个CPU,g查看进程,G查看线程)
2) 使用sar m n (m代表取值间隔,n代表取值次数)查看CPU使用率变化趋势
3) 使用kiinfo深度检查,主要用法有
a) Kiinfo –h 显示帮助信息
b) kiinfo –kipid pid=XXX(想深入分析的进程PID的调用、线程信息、物理IO、逻辑IO、进程等待等信息)
c) kiinfo –kipid oralce(分析oralce用户的进程信息)
4) 使用lsof查看某个进程打开的文件句柄
Lsof -n –p PID
1.2 内存
1) 实时性能数据使用glance(m查看内存信息)
2) 执行:vmstat m n(m代表取值间隔,n代表取值次数)
3) 执行swapinfo –atm 查看swap区使用情况
4) 使用kmeminfo深度检查
a) Kmeminfo 显示内存的使用
b) Kmeminfo –user max=5 查看使用物理内存前5名的进程
c) Kmeminfo –u oralce查看具体用户进程占用内存的情况
d) Kmeminfo –u 查看所有用户进程占用内存的情况
1.3 磁盘
1) 实时性能数据使用glance(u以磁盘为标准查看,U以HBA卡为标准查看,v以LV为标准查看,i以文件系统为标准查看)
2) 执行sar –d m n (m代表取值间隔,n代表取值次数)观察磁盘使用率的变化趋势
3) sar –H m n (m代表取值间隔,n代表取值次数)观察以HBA的使用率的变化趋势
4) 使用lsof查看打开某个文件的进程列表
Lsof /tmp/xxx
5) 使用kiinfo查看IO和HBA信息
Kiinfo –kidisk dev= 0x1f006000 –a 15 –p 1 (-a指收集15秒内的数据,-p代表收集1次)
6) 使用runki深度查看IO的调用,物理、逻辑、等待事件等。
Runki –msk –d 10 (收集10秒数据) ,收集到的文件保存在本地,此命令收集的信息较大,建议选取文件系统较大的目录进行收集,以10秒为间隔。
1.4 网络
1) 实时数据使用glance,l查看lan的传输量
2) 执行:netstat –in 查看各个lan的IP地址和error
3) 执行:netstat –rn 查看路由
4) 执行:netstat –an 查看网络链接
5) 执行:netstat –s 查看网络统计数据
6) 执行:netfmt –f /var/adm/nettl.LOG000查看网络日志有无报错
7) 执行:ping 目标IP 查看连通性
8) 使用lsof查看打开制定端口的进程
a) lsof -nP -i tcp:842 #列出TCP端口842的信息
b) lsof -nP -i tcp:telnet #列出Telnet端口的信息
c) lsof -i -P |grep
d) lsof -nP -i tcp:telnet #列出Telnet端口的信息
9) 使用lanshow工具深度查看,工具保存
Lanshow –f >lanshow.out
10) 使用tcpdump收集网络包数据
a) tcpdump host 11.156.108.1 查看到达或离开11.156.108.1的包
b) tcpdump host 11.156.108.1 and 11.156.108.2 查看11.156.108.1和11.156.108.2的网络数据
c) tcpdump tcp port 23 host 210.27.48.1获取主机210.27.48.1接收或发出的telnet包
d) tcpdump udp port 123对本机的udp 123 端口进行监视
e) tcpdump -i eth0 src host 11.156.108.1系统将只对11.156.108.1的主机的通信数据包进行监视
1 AIX速查命令
1.1 CPU
系统CPU是整个系统的核心资源,通常也是系统的最繁忙部分,某些用户应用需要进行大量计算,所以CPU是可以保持繁忙的。通常服务器都配置多个CPU,用sar命令可以收集每个CPU的使用情况,图示命令以2秒间隔收集12次CPU使用比例数据,红框内的数据反映了CPU的平均使用情况。如果只有部分CPU繁忙,其它CPU保持空闲,可以调查应用运行特点,单线程的应用只能运行在单个CPU上,不能充分利用多个CPU的计算能力,所以尽量配置应用为多进程多线程应用。
在topas监控界面,使用c命令可以切换到CPU视图,从而观察每个CPU的使用情况。如下图所示
作为nmon工具的重要组成命令,vmstat也收集CPU使用情况数据,如下图所示。
当已确定CPU繁忙时,需要确定哪些进程正在消耗CPU资源,在topas监控界面,使用P命令可以切换到进程视图,移动光标到CPU%列,将对进程按照CPU使用量降序排列,大部分的CPU资源应该消耗在系统的核心应用进程上,如果出现非核心应用进程占用大量CPU资源,应该分析该进程的作用和产生原因,应避免出现CPU资源浪费在与业务无关的进程的情况。
进一步分析进程和系统命令对CPU资源的使用情况使用tprof -usekj -x sleep 9命令,该命令收集9秒的系统数据并生成如下图所示报告,收集数据时间长短可调整。
通过以上命令可以获得占用CPU资源较多的函数调用,为代码级的性能调整提供了线索。
1.1 内存
当系统持续进行换页操作时,可以确定物理内存资源紧张或者内存资源分配不合理。这时首先要确定通过调整虚拟内存管理器内核参数重新分配内存资源能否解决物理内存资源不足的问题。使用svmon命令可以获得物理内存使用的总体信息。内存的size值给出了系统装配的物理内存页面数,virtual值给出了系统工作所需的页面数,如果virtual(系统运行需要的内存,计算型内存)值大于size值表示物理内存资源不足,换页不可避免,此时只能在硬件上升级物理内存或者配置用户应用减小应用对内存的需求量来解决此性能问题。
作为nmon工具的重要组成命令,vmstat收集内存使用数据和换页数据,如下图所示。内存的fre列表示空闲的物理内存页面数,内存的avm(对应svmon命令的virtual)列表示系统工作所需的页面数,如果此页面数对应的容量大于系统物理内存容量,则换页不可避免。
使用lsps命令可以收集换页空间的使用情况,换页空间使用率高并持续增加是物理内存资源不足的表现。
使用vmstat –v命令获得当前系统物理内存中计算内存和文件缓存的配置参数和当前的使用情况。
当系统工作内存不足时,如下命令限制文件缓存对物理内存的占用比例。
# vmo –p –o lru_file_repage=0 –o maxclient%=90 –o maxperm%=90 –o minperm%=3
使用svmon –S命令可以获得所有虚拟内存段对物理内存的使用情况。
使用svmon –S -s命令可以获得所有系统内核内存段对物理内存的使用情况。
使用svmon –U命令可以列出所有用户对物理内存的使用情况。
使用svmon –P命令可以列出所有进程对物理内存的使用情况。
使用svmon –P pid命令可以显示特定进程对物理内存的使用情况。
使用svmon –C命令可以显示由特定命令构成的所有进程对物理内存的使用情况。
1.1 磁盘
当观测到系统带宽保持繁忙,使用iostat命令收集磁盘使用数据,此命令可以收集磁盘带宽的使用率和磁盘I/O数据吞吐量,可以大致估计系统数据吞吐量与应用负载是否相匹配,避免与业务无关的大量I/O操作。
使用df命令显示文件系统剩余容量,文件系统剩余容量过低或者出现容量满,写磁盘失败会导致很严重的系统问题。
使用dd命令可以引起大量磁盘读写操作,配合time命令可以测试收集存储带宽,此存储带宽测试工作需要选择系统空闲时段进行。获得存储带宽后,可以比较硬件配置带宽,来判断存储带宽是否满足业务负载需求。
AIX系统提供了一些文件系统I/O相关的内核参数,通过ioo命令进行调整。
1.1 网络
使用netstat命令监控网络通讯状况,如果errs列持续不为0,表示网络设备存在故障,需定位具体原因来解决。
命令topas中反映了网络通讯数据的实时吞吐量,可以观察网络输入数据量和输出数据量是否与业务量相符。对于业务包很多但数据量小的情况,可以增加网络数据包的大小。比较每秒通讯的千字节数和网络配置带宽,如网络配置带宽构成系统瓶颈,需升级网卡等硬件设备。
1 Linux速查命令
1.1 CPU
1) 检查Linux操作系统CPU负载:
a) 执行top命令;
b) 执行sar 2 30命令;
c) 执行vmstat 2 30命令;
d) 执行mpstat 2 30命令。
2) 定位占用CPU资源最多的进程:
a) 执行top命令;
b) 在top命令执行窗口,使用热键“P”,按照CPU使用率对进程进行排序。
3) 判断是否有僵尸进程:
a) 执行top命令;
b) 执行ps -ef|grep defunct命令。
1.2 内存
1) 检查Linux操作系统内存使用率:
a) 执行命令:top---在程序界面中,查看MEM、Swap、Buffer、Cache数值;
b) 执行命令:free---查看+/-buffers/cache后的内存使用率;
c) 执行命令:cat /proc/meminfo---查看内存详细使用情况。
2) 查询占用内存资源最多的进程:
a) 执行top;
b) 在top界面中按热键“M”,按照内存使用率对进程进行排序。
3) 查看内核slab内存占用:
a) 查看当前kernel slab cache信息
#slabtop
b) #cat /proc/slabinfo
4) 清理系统内存中的cache和buffer:
a) 刷新缓存
#sync
b) 清理cache
可以有选择地进行清理:
清理pagecache:echo 1 > /proc/sys/vm/drop_caches
清理dentries和inodes缓存:echo 2 > /proc/sys/vm/drop_caches
清理pagecache、dentries和inodes缓存:echo 3 > /proc/sys/vm/drop_caches
c) 查看当前kernel slab cache信息
#slabtop
#cat /proc/slabinfo
5) 交换区使用情况检查
a) 查看内存及交换空间使用情况
$free
b) 查看交换空间设备使用情况
$cat /proc/swaps
c) 查看交换区访问情况
$vmstat 2 10
此命令输出周期为2秒,共计10次。需注意其中的‘swap’列的si、so值。
d) 查看占用交换区最多的进程
$top
在top界面中,按’f’键、’p’键并回车,在top界面中,会新增一列“swap”,可据此定位占用swap较多的进程。
1.3 磁盘
1) 检查Linux操作系统磁盘I/O负载
执行:vmstat、iostat、sar -d命令。
vmstat反映了进程的虚拟内存,虚拟内存,磁盘,trap和cpu的活动情况,在多cpu系统中,vmstat在输出结果中平均了cpu数量
iostat:如果想看每个设备的io情况,可使用iostat命令
2) 查询消耗I/O资源最多的进程
运行iotop工具进行系统I/O性能监控
3) 文件系统信息
a) 执行以下命令查看文件系统挂载情况:
#df 查看文件系统使用率
#mount 查看文件系统mount属性
#cat /etc/fstab 确认是否有未挂载文件系统
b) 查看日志中是否有关于文件系统的报错信息
#tail -2000 /var/log/messages
1.4 网络
1) 主机通讯是否延迟
执行命令:
#ping 网关_IP
#ping 关联主机_IP
2) 主机通讯是否丢包
执行命令:
#/sbin/ifconfig
3) 到相连业务系统的通讯是否正常
执行命令:
#ping 关联系统_IP;
#telnet 关联系统_IP PORT_NUMBER
#route
#traceroute 关联系统_IP
#ifconfig
4) 网卡驱动是否正常加载
执行命令:
#tail -2000 /var/log/messages 查看日志信息
#ifconfig 查看网卡工作状态
#lspci |grep -i eth 查看物理网卡
#ethtool -i 网卡_名称 查看指定网卡所使用的驱动程序
#cat /etc/modprobe.conf 查看网卡所使用的驱动程序名称
#cat /proc/modules 查看已加载驱动
#lsmod 查看当前网卡驱动是否已经正确加载
#modinfo 驱动_名称 查看驱动信息
5) 网卡配置参数
执行命令:
#ethtool 网卡_名称
6) 网卡配置信息检测
执行以下命令:
#ping 网管_IP
#ping 关联主机_IP
#ifconfig 查看网卡信息
#tail -2000 /var/log/messages 查看日志信息
#cat /etc/sysconfig/network 查看主机名及缺省路由配置
#cat /etc/sysconfig/network- scripts/ifcfg-eth?, 查看IP,掩码,网关等设置信息;
修改配置文件后,执行 #service network restart ,重启网络服务。
7) 网络连接数统计
执行以下命令查看当前网络连接数量:
a) listen状态的连接数:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep LISTEN |awk '{print $1}'
b) established状态的连接数:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep ESTABLISHED |awk '{print $1}'
c) close_wait状态的连接数:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep CLOSE_WAIT |awk '{print $1}'
d) fin_wait_2状态的连接数:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep FIN_WAIT_2 |awk '{print $1}'
8) 网络BUFFER请求积压
a) 查看当前网络TCP请求信息
#netstat -ntlp
在输出结果中,“Recv-Q”和“Send-Q”两列,分别表示相应网络监听端口的BUFFER信息。
b) 查看TCP接收队列容量
#cat /proc/sys/net/ipv4/tcp_rmem 取输出结果的第三个数
# cat /proc/sys/net/core/rmem_max
说明:如果tcp_rmem比rmem_max 大,则取rmem_max的值 ,否则取tcp_rmem的值
c) 查看TCP发送队列容量
# cat /proc/sys/net/ipv4/tcp_wmem 取输出结果的第三个数值
# cat /proc/sys/net/core/wmem_max
说明:如果tcp_wmem比wmem_max 大,则取wmem_max的值 ,否则取tcp_wmem的值
d) 调整TCP接收队列容量示例
临时方法:
#sysctl -w "net.ipv4.tcp_rmem=4096 32768 262142"
# sysctl -w " net.core.rmem_max=262142"
永久调整:
#echo "net.ipv4.tcp_rmem=4096 32768 262142" >> /etc/sysctl.conf
#echo " net.core.rmem_max=262142" >> /etc/sysctl.conf
e) 调整TCP发送队列容量示例
临时方法:
#sysctl -w "net.ipv4.tcp_wmem=1024 32768 262142"
# sysctl -w " net.core.wmem_max=262142"
f) 永久调整:
#echo "net.ipv4.tcp_wmem=4096 32768 262142" >> /etc/sysctl.conf
#echo " net.core.wmem_max=262142" >> /etc/sysctl.conf
9) 抓包
如果遇到网络通信问题,可以通过收集网络抓包数据帮助分析问题,在LINUX上网络抓包使用tcpdump工具。tcpdump是一个非常灵活的工具,可以通过多个参数的组合,实现对网络上的数据包进行截获。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
例如:tcpdump -i eth1 tcp port 80 抓取指定网路接口的数据包
常用参数:-c n 指定抓取数据包的数量;-i ethn 指定网路接口;-e 抓取数据包中打印链路层包头;-r 读取文件中数据包信息; -f file 指定输入的文件; -w file 将抓取数据输出到指定文件;ip/tcp/udp/net指定抓取特定协议的数据包;host hostname/ip 抓取指定host发出或接受的数据包。