当前位置: 首页 > 科技观察

用工具快速定位数据库问题

时间:2023-03-20 01:41:15 科技观察

借助工具快速定位数据库问题检测服务器各项指标,排查问题。今天给大家介绍一款非常好用的检测工具sar。常见问题在日常的数据库运维中,我们经常会遇到以下几种情况:数据库卡慢服务器负载过高服务器异常重启遇到这些情况后,我们通常会使用一些工具来检测服务器的状态。强大的sysstat工具包sysstat是一个软件包,其中包含一组用于监视系统性能和效率的工具。安装方式有两种:sudoyuminstallsysstatgitclonegit://github.com/sysstat/sysstat包含工具sysstat工具集包括以下常用工具:iostat:用于监控系统设备的IO负载。mpstat:用于在多CPU环境下查看各个可用CPU的状态信息。pidstat:用于监控所有或指定进程对系统资源的占用情况。sar:目前Linux上最全面的系统性能分析工具之一,可以从各个方面报告系统活动。今天主要介绍功能强大的sar。Sarsar(SystemActivityReporter系统活动报告)是目前Linux上最全面的系统性能分析工具之一。sar工具会对系统当前状态进行采样,然后通过计算数据和比率,从各个方面展示系统当前的运行状态,包括:文件读写、系统调用使用情况、磁盘I/O、CPU效率、内存使用、进程活动和IPC(进程间通信)相关活动。特点可连续对系统进行采样,获取大量的采样数据采样数据和分析结果可以文件存储,所需负载很小。Sar提供了丰富的选项和强大的功能。Sar统计项磁盘I/O和数据传输率统计CPU统计内存、大页和交换空间利用率统计虚拟内存、分页和故障统计网络统计进程创建统计中断统计光纤通道流量统计NFS服务器和客户端活动统计套接字统计数据队列和系统负载统计内核内表统计TTY活动统计文件系统利用率统计从图中也可以看出sar是相当强大的。今天我们只介绍几个对排查数据库问题有帮助的参数。1排除CPU问题使用-u或-p参数报告CPU统计信息。输出项说明:CPU:all表示统计的是所有CPU的平均值。%user:运行的用户级别(应用程序)使用的总CPU时间的百分比。%nice:用户级,nice操作占用CPU总时间的百分比(nice命令用于改变进程的优先级)%system:内核级(kernel)占用CPU总时间的百分比跑步。%iowait:等待I/O操作所花费的总CPU时间的百分比。%steal:hypervisor等待为另一个虚拟进程服务的虚拟CPU的百分比%idle:CPU空闲时间占总CPU时间的百分比。分析:如果%iowait的值过高,说明硬盘存在I/O瓶颈。如果%idle的值很高但是系统响应很慢,可能是CPU在等待分配内存,此时应该增加内存容量。如果%idle的值持续低于1,说明系统的CPU处理能力比较低,说明系统中最需要解决的资源是CPU。使用-q参数报告进程队列长度和平均负载状态。输出项说明:runq-sz:运行队列的长度(等待运行的进程数)plist-sz:进程列表中的进程和线程数ldavg-1:系统平均负载在***1分钟(系统平均负载)ldavg-5:过去5分钟的平均系统负载ldavg-15:过去15分钟的平均系统负载(kb)。这个值和free命令中的free值基本一致,所以不包括buffer和cache空间。kbmemused:已用内存(kb)。但不包括内核本身使用的内存。这个值和free命令中used的值基本一致,所以包含buffer和cache空间。%memused:内存使用百分比。该值是kbmemused和内存总量(不包括swap)的百分比。kbbuffers:内核自己用来做buffers的内存(kb)kbcached:内核自己用来做cache的内存(kb)取值为free命令中的buffer和cache。kbswpfree:剩余交换空间(kb)kbswpused:已用交换空间(kb)%swpused:交换空间使用百分比kbswpcad:在交换空间和内存之间交换缓存值。将内存中的数据交换到swap使用-W参数上报swap统计输出项说明:pswpin/s:系统交换到swap分区的页数pswpout/s:换出的页数系统使用-B参数内存分页统计信息输出项说明:pgpgin/s:表示每秒从磁盘或SWAP替换到内存的字节数(KB)。对于低版本内核(2.2.x),此值表示每秒替换的块数。pgpgout/s:表示每秒从内存替换到磁盘或SWAP的字节数(KB)。fault/s:系统每秒产生的pagefault数(major+minor)(kernelversion2.5)pagefault中断不一定产生I/O。majflt/s:每秒产生的mainpagefault数,需要从磁盘加载到内存1的数据页(2.5版本内核报告)。解释:高分页是内存不足的信号。3排除I/O问题使用-b参数显示I/O和磁盘读写速率的统计信息。输出项说明:tps:物理设备每秒的I/O传输总量。对于一个物理设备的I/O请求,可以将多个逻辑请求组合成一个针对具体设备的I/O请求。tps:每秒从物理设备读取的数据总量wtps:每秒写入物理设备的数据总量bread/s:每秒从物理设备读取的数据量,单位为block/s。高于2.4的内核的块大小为512字节。低版本内核块大小不确定bwrtn/s:每秒写入物理设备的数据量,单位为block/s。使用-u或-p参数可参考上文TroubleshootingCPUProblems中的介绍。使用-d(-p)参数deviceblockusage(适用于2.4及更新内核)输出说明:tps:每秒来自物理磁盘的I/O数。多个逻辑请求会合并为一个I/ODisk请求,一次传输的大小是不确定的。rd_sec/s:每秒读取的扇区数。扇区大小为512bwr_sec/s:每秒写扇区数。扇区大小为512bavgrq-sz:每次设备I/O操作的平均数据大小(扇区)。avgqu-sz:磁盘请求队列的平均长度。await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位毫秒(1秒=1000毫秒)。svctm:磁盘I/O请求对设备的平均服务时间(毫秒)%util:磁盘I/O请求对设备的平均CPU百分比(设备Broadbandutilization)当这个值接近100%时,表示设备正忙。注意:当avgqu-sz的值较低时,设备的利用率较高。当%util的值接近1时,表示设备带宽已满。显示数据时,使用的设备规范为:devm-n。m是设备的主设备号,最新的内核(2.5+),n是次设备号,但是2.5版本之前的内核只有一个序列号。如果使用-p参数,设备名称也可以是可打印的形式。也就是说:参数-p可以打印出sda、hdc等磁盘设备名,如果不使用参数-p,设备节点可能是dev8-0、dev22-0。对于某些2.4版内核,avgqu-sz、await、svctm和%uti可能不可用并显示为0.00。4排查网卡流量问题使用-nDEV参数上报网络统计信息-n个参数对应不同的关键字,上报不同info:DEV关键字,上报网络统计信息。EDEV关键字用于报告网络设备的故障。NFS关键字用于报告NFS客户端的故障。NFSD关键字用于向NFS服务器报告。SOCK关键字报告用户使用的套接字。ALL关键字报告上述所有网络信息。一般情况下,我们只关注网卡流量,即使用-nDEV参数输出说明:IFACE:是网络设备名rxerr/s:每秒收到的损坏数据包数txerr/s:错误数persecondwhensendingpacketscoll/s:collisionspersecondwhensendingpacketsNumber(仅在半双工模式下可用)缓冲区已满。txdrop/s:由于缓冲区满,网络设备的发送端,每秒丢失的网络数据包数txcarr/s:发送数据包时每秒发生的载波错误数rxfram/s:帧对齐错误数persecondwhenreceivingpacketsrxfifo/s:接收数据包时,每秒缓冲区溢出错误数txfifo/s:发送数据包时,每秒缓冲区溢出错误数以上是sar过程中常用的参数数据库故障排除。