您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 综合/其它 > linux常用系统性能监控工具
linux常用系统性能监控工具在此部分中,了解用于监视物理组件的高级Linux命令Linux系统由若干主要物理组件组成,如CPU、内存、网卡和存储设备。要有效地管理Linux环境,您应该能够以合理的精度测量这些资源的各种指标—每个组件处理多少资源、是否存在瓶颈等。在本系列的其他部分中,您已经学习了处于宏级别的用于测量指标的一些命令。但在此部分中,您将了解专门用于监视物理组件的高级Linux命令。具体而言,您将了解以下类别的命令:组件命令内存free、vmstat、mpstat、iostat、sarCPUvmstat、mpstat、iostat、sarI/Ovmstat、mpstat、iostat、sar进程ipcs、ipcrm正如您所见,某些命令出现在多个类别中。这是由于这些命令可以执行很多任务。某些命令比较适合于某些组件,例如iostat适合I/O,但是您应该了解它们工作的差别并使用您更熟悉的命令。在多数情况下,单个命令可能对于了解实际发生的情况没什么用。要获取所需的信息,您应该了解多个命令。free一个常见的问题是“我的应用程序和各种服务器、用户和系统进程正在使用多少内存?”或者“现在有多少内存可用?”如果正在运行的进程使用的内存大于可用RAM,则需要将这些进程移到交换区。因此,一个补充问题是“正在使用多少交换区空间?”free命令将回答所有这些问题。而且,一个非常有用的选项–m可以显示可用内存(以MB为单位):#free-mtotalusedfreesharedbufferscachedMem:17721654117018618-/+buffers/cache:1017754Swap:19831065918以上输出显示系统具有1,772MB的RAM,已使用1,654MB,还有117MB内存可用。第二行显示在物理内存中缓冲区和缓存大小的更改。第三行显示交换区利用情况。要以KB或GB为单位显示以上内容,请将-m选项分别替换为-k或-g。使用–b选项将以字节为单位。#free-btotalusedfreesharedbufferscachedMem:18581299201724039168134090752018640896643194880-/+buffers/cache:1062203392795926528Swap:20803665921116721152963645440–t选项在输出底部显示总数(物理内存和交换区的总和):#free-m-ttotalusedfreesharedbufferscachedMem:17721644127016613-/+buffers/cache:1014757Swap:19831065918Total:375627091046尽管free不显示百分比,但是我们可以提取并格式化输出的特定部分,将已使用的内存仅显示为总数的百分比:#free-m|grepMem|awk'{print($3/$2)*100}'98.7077这在具体数据非常重要的shell脚本中非常方便。例如,您可能希望在可用内存的百分比低于特定阈值时触发一个警报。同样,要发现已使用交换区空间的百分比,您可以发出:free-m|grep-iSwap|awk'{print($3/$2)*100}'可以使用free查看应用程序施加的内存负载。例如,启动备份应用程序之前检查可用内存,启动之后立即检查可用内存。两者之差就是备份应用程序消耗的内存。针对Oracle用户的用法那么,您如何使用该命令管理运行Oracle环境的Linux服务器呢?性能问题的一个最常见原因是内存不足,从而导致系统临时将内存区域“交换”到磁盘中。某种程度的交换可能是必然的,但是交换过多则表示可用内存不足。而现在,您可以使用free获得可用内存信息,紧接着使用sar命令(稍后介绍)检查内存和交换区消耗的历史趋势。如果交换区的使用是暂时的,则可能出现一次高峰,但是如果明确要经过一段时间,则应注意。持续的内存过载可能有几个明显且可能的疑点:较大的SGA高于可用内存在PGA上分配了大量内存某些进程出现泄露内存的错误对于第一种情况,应确保SGA低于可用内存。根据经验,对SGA使用大约物理内存的40%,当然,应根据具体情况定义该参数。对于第二种情况,应尝试减少查询中的大量缓冲区分配。对于第三种情况,应使用ps命令(在本系列的之前部分中介绍过)确定可能泄露内存的具体进程。ipcs当某个进程运行时,它会夺取“共享内存”。该进程可能拥有一个或很多个共享内存段。进程之间彼此(“进程间通信”或IPC)发送消息并使用信号。要显示有关共享内存段、IPC消息队列以及信号的信息,可以使用一个命令:ipcs。–m选项非常受欢迎;它显示共享内存段。#ipcs-m------SharedMemorySegments--------keyshmidownerpermsbytesnattchstatus0xc41455142031618oracle660409600x000000003670019oracle66083886081080x00000000327684oracle6001966082dest0x00000000360453oracle6001966082dest0x00000000393222oracle6001966082dest0x00000000425991oracle6001966082dest0x000000003702792oracle6609269411841080x00000000491529oracle6001966082dest0x49d1a2883735562oracle6601405091841080x00000000557067oracle6001966082dest0x000000001081356oracle6001966082dest0x00000000983053oracle6001966082dest0x000000001835023oracle6001966082dest该输出表明服务器正在运行Oracle软件,显示了各种共享内存段。每个共享内存段由显示在“shmid”列下面的共享内存ID唯一标识。(稍后,您将看到如何使用该列值。)显然,“owner”显示内存段的所有者,“perms”列显示权限(与unix权限相同),“bytes”显示字节大小。-u选项显示一个非常快速的摘要:#ipcs-mu------SharedMemoryStatus--------segmentsallocated25pagesallocated264305pagesresident101682pagesswapped100667Swapperformance:0attempts0successes–l选项显示限定值(相对于当前值):#ipcs-ml------SharedMemoryLimits--------maxnumberofsegments=4096maxsegsize(kbytes)=907290maxtotalsharedmemory(kbytes)=13115392minsegsize(bytes)=1如果您看到当前值处于或接近限定值,则应该考虑提高限定值。可以使用shmid值获取具体共享内存段的详细图片。–i选项可以完成该操作。下面是查看shmid3702792详细信息的方法:#ipcs-m-i3702792SharedmemorySegmentshmid=3702792uid=500gid=502cuid=500cgid=502mode=0660access_perms=0660bytes=926941184lpid=12225cpid=27169nattch=113att_time=FriDec1923:34:102008det_time=FriDec1923:34:102008change_time=SunDec705:03:102008稍后,本文将采用一个示例向您介绍如何解释以上输出。-s显示系统中的信号:#ipcs-s------SemaphoreArrays--------keysemidownerpermsnsems0x313f2eb81146880oracle6601040x0b7765042326529oracle660154…andsoon…它显示一些有价值的数据。它显示ID为1146880的信号数组具有104个信号,另一个数组具有154个信号。如果您增加信号,则总值必须低于内核参数(semmax)定义的上限。安装Oracle数据库软件时,预安装的检查程序将检查semmax的设置。之后,当系统达到稳定状态时,您可以检查实际的利用情况,然后相应地调整内核值。针对Oracle用户的用法如何查看Oracle数据库实例使用的共享内存段?为此,请使用oradebug命令。首先以sysdba身份连接到数据库:#sqlplus/assysdba在SQL中,使用oradebug命令,如下所示:SQLoradebugsetmypidStatementprocessed.SQLoradebugipcInformationwrittentotracefile.要查找跟踪文件的名称,执行以下命令:SQLoradebugTRACEFILE_NAME/opt/oracle/diag/rdbms/odba112/ODBA112/trace/ODBA112_ora_22544.trc现在,如果打开该跟踪文件,将会看到共享内存ID。下面是该文件的节选:Area#0`FixedSize'containingSubareas0-0Totalsize000000000014613cMinimumSubareasize00000000AreaSubareaShmidStableAddrActualAddr00172359700x000000200000000x00000020000000SubareasizeSegmentsize0000000000147000000000002c600000Area#1`VariableSize'containingSubareas4-4Totalsize000000002bc00000MinimumSubareasize00400000AreaSubareaShmidStableAddrActualAddr14172359700x000000208000000x00000020800000SubareasizeSegmentsize000000002bc00000000000002c600000Area#2`RedoBuffers'containingSubareas1-1Totalsize0000000000522000MinimumSubareasize00000000AreaSubareaShmidStableAddrActualAddr21172359700x000000201470000x00000020147000SubareasizeSegmentsize0000000000522000000000002c600000...andsoon...共享内存id以红色粗体显示。可以使用该共享内存ID来获取共享内存的详细信息:#ipcs-m-i17235970另一个有用的观察是lpid的值—最后一个接触共享内存段的进程的进程ID。要展示该属性的值,使用SQL*Plus从另一个会话连接到该实例。#sqlplus/assysdba在该会话中,查找服务器进程的PID:SQLselectspidfromv$process2whereaddr=(selectpaddrfromv$session3wheresid=4(selectsidfromv$mystatwhererownum2)5);SPID------------------------13224现在,针对同一共享内存段再次执行ipcs命令:#ipcs-m-
本文标题:linux常用系统性能监控工具
链接地址:https://www.777doc.com/doc-4574944 .html