服务器排查工具

以下项目的过度使用会直接导致高负载问题。

  • CPU
  • 内存(包括虚拟内存)
  • 磁盘IO

sar工具——查看历史资源使用情况

只要通过cron命令对sysstat进行周期性执行(/etc/cron.d/sysstat),服务器的运行状态数据就会被收集起来。如果cron没有运行,sysstat将无法收集历史统计结果。

要在sar中查看历史资源使用情况,我们必须为文件提供与统计数据相符的路径。

举例来说,如果大家打算查看本月23号以来服务器的平均负载状况,可以运行以下命令:

$ sar -q -f /var/log/sa/sa23

如果大家打算查看当前日期的统计信息,则不必为其指令具体时间。

$ sar –q

Linux下的cron服务

这个系统服务是默认启动的。用来周期性的执行某种任务或等待处理某些事件的一个守护进程。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

使用者权限文件

/etc/cron.deny 该文件中所列用户不允许使用crontab命令

/etc/cron.allow 该文件中所列用户允许使用crontab命令

/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

任务定义

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

top工具——实时显示系统各进程的资源占用状况

类似于Windows的任务管理器。

该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.

【统计信息区】

1. 任务队列信息,同uptime命令执行结果。

当前系统时间:17:24:11

系统连续运行时长:up 1 day, 6:30

登录系统的用户数:1 user

负载情况(1分钟,5分钟,15分钟):load average

注:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

2. 任务Tasks

总进程数:total 122

运行态:running

休眠态:sleep

停止态:stoped

僵尸态:zombie

3. cpu状态信息

us, 用户空间占用百分比

sy, 内核空间

ni, 改变过优先级的进程

id, 空闲CPU百分比

wa, IO等待占用CPU百分比

hi, 硬中断占用CPU百分比

si, 软中断占用CPU百分比

4. 内存状态

total, 物理内存总量

used, 使用中的内存

free, 空闲中

buffers, 缓存的内存量

使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached

5. swap交换分区信息

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

【各进程的状态监控】

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

其他命令

top –c  显示完整命令

top -p 574  显示指定的进程信息

Linux中的swap与memory内存

memory就是机器的物理内存,读写速度低于cpu一个量级,但远高于磁盘。内存造价高于磁盘,并且断电丢失数据,不能把所有数据和程序都保存在内存中。

当内存不足时,把不经常运行的程序暂时放到交换区中,即swap,当需要该进程时,再重新加载回内存。

swap

计算机对内存分为物理内存与虚拟内存,虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由操作系统做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。这里的虚拟内存即所谓的swap。

当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程

内存与swap之间是按照内存页为单位来交换数据的,一般Linux中页的大小设置为4kb。而内存与磁盘则是按照来交换数据的。

当物理内存使用完或者达到一定比例之后,我们可以使用swap做临时的内存使用。当物理内存和swap都被使用完那么就会出错,out of memory。对于使用多大比例内存之后开始使用swap,在系统的配置文件中可以通过调整参数进行修改。

free命令——显示内存及buffer使用情况

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

-b  以Byte为单位显示内存使用情况。

-k  以KB为单位显示内存使用情况。

-m  以MB为单位显示内存使用情况。

-g   以GB为单位显示内存使用情况。

-o  不显示缓冲区调节列。

-s<间隔秒数>  持续观察内存使用状况。

-t  显示内存总和列。

-V  显示版本信息。

第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是330MB, 已用内存是3631MB, 其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

当可用内存少于额定值的时候,就会开会进行交换.

如何看额定值:命令:cat /proc/meminfo

【buffers和cached的区别】

磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。

Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。

Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。

简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.

如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。

【关于内存使用情况】

内存使用情况提示:服务器内存占用量较高的情况其实非常正常。这是因为内存的读写速度及效率远高于服务器磁盘,因此操作系统倾向于将内存作为缓冲机制预先载入数据,从而提高数据读取速度。

同样,内存使用百分比也并不是什么大问题(除非大家没有设置虚拟内存分区,但这也与内存本身无关)。大家真正需要关注的是虚拟内存使用百分比,因为只有在服务器的物理内存被全部占用后、虚拟内存才会接替而上发挥作用。这一数字越低,就说明服务器的运行状态越好。如果虚拟内存使用率为0%,则意味着我们的服务器能够完全利用物理内存执行任务。

那么虚拟内存使用率达到多少才算过高?这取决于大家自己的感觉。一般来说,如果虚拟内存使用率一直不高、那么我们的服务器的运行状态还是比较理想的。如果大家发现虚拟内存使用率随时间不断提升(例如由1%到7%再到32%),这就代表服务器上的某些进程正在疯狂吞噬内存,我们需要及时展开调查以了解具体情况(而不该直接安装更多内存)。一旦服务器用尽了所有物理内存与虚拟内存,那么整套系统的运行将变得极为缓慢,需要经过重启才能暂时恢复正常。

iostat命令——当前磁盘IO使用情况

以下命令将以每秒一次的频率连续显示十次磁盘使用率统计。请大家关注显示结果中的%util列:

$ iostat -x 1 10

参考资料

http://os.51cto.com/art/201307/402699_all.htm

http://www.cnblogs.com/peida/archive/2012/12/24/2831353.html

http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

时间: 2024-10-01 05:13:18

服务器排查工具的相关文章

Linux批量管理服务器小工具--PSSH

Linux批量管理服务器小工具--PSSH 一.简介 pssh -- parallel ssh program pssh  is  a program for executing ssh in parallel on a number of hosts.  It provides features such as sending input to all of the processes, passing a password to ssh, saving output to files, an

Windows 10安装AD远程服务器管理工具

Win10正式版的远程服务器管理工具下载:32位 /64位 时间和语言 区域和语言,添加语言 英语 英语(美国) 安装好后,点击选项 下载第一项(忘记截图) 语言包下载完成 安装之前下载对应版本的远程服务器管理工具 安装完成(重启) 出现了Active Directory用户和计算机

服务器必备工具软件推荐

对于经验丰富的网站管理员来说,选用何种软件工具已经不是什么难题,但对一些经验尚浅的管理员而言,选用何种工具就显得非常重要.如何能从成百上千 的工具类软件中筛选出最合适的,无疑有很多方面的考虑.下面小编就给大家推荐一些老管理员经过层层筛选遴选出的十款服务器必备工具软件,供大家参考和分 享,这十款软件可以说是服务器必备之软件了,基本涵盖了服务器维护的各个方面. 1.远程桌面连接 Remote Desktop - 远程桌面连接(以前称为“终端服务客户端”)主要是用于对远程托管的服务器进行远程管理,使用

windows10 专业版的远程服务器管理工具下载

一.安装远程服务器管理工具: 下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=45520 二.关闭远程服务器管理工具: 1 在桌面上右击"开始",进入"程序和功能" 2 单击程序,然后在程序和功能中单击"启用或关闭 Windows 功能". 3 在 Windows 功能对话框中,展开远程服务器管理工具,然后展开"角色管理工具"或"功能管理工

Rumpus Mac版FTP服务器客户端工具

Rumpus PRO for Mac是Mac平台上一款能够帮助用户管理FTP账户的FTP服务器客户端工具.Rumpus Mac特别版具有Web文件传输,帐户管理,安全选项,文件上传等强大功能,除此之外Rumpus for mac还拥有远程服务器上的活动监视器这个给你,能够让用户更好地管理FTP! 链接: https://pan.baidu.com/s/1Vdbymj47UFJXJ3AUU0Xnww 提取码: jr6n Rumpus PRO Mac版安装教程 下载完成后打开“Rumpus for

goPanel 2 for Mac(Web服务器管理工具)

goPanel 2 for Mac是一款实用的Web服务器管理软件,拥有超过30种独特功能,能与专用服务器或虚拟专用服务器一起使用.可以安装与管理以下服务:如Apache或Nginx.PHP.MySQL或MariaDB.Mail Server和FTP.本 goPanel 2 for Mac是一个非常直观的OS X应用程序,用于管理Web服务器,是您在基于Unix的服务器上安装的用于Web托管的现有控制面板应用程序的替代方案.易于安装和配置Apache或Nginx Web服务器,PHP,MySQL

服务器管理软件 服务器集中管理工具

服务器管理软件  服务器集中管理工具   IIS7远程桌面工具,一款可以批量管理服务器的远程工具 下载:http://yczm.iis7.com/?lxmd 下载之后解压,然后打开就可以使用啦: 想远程哪台机器,就鼠标双击哪台就可以了.全选打开就是全部的机器,下图为远程效果图: 新版本: 老版本: 打开远程之后 原文地址:https://www.cnblogs.com/cclxm99/p/12408997.html

虚拟机性能监控与故障排查工具介绍

本文来读书籍<深入理解java虚拟机-JVM高级特性与最佳实践>的阅读笔记,并且对虚拟机性能监控与故障排查一节做了内容整理. 关于导图中的两部分内容还是希望大家能够亲自测试体验下,在网上也有不少的文章介绍,这里摘录几篇个人认为不错的文章,供参考: jstat/jinfo/jstack/jmap命令行工具使用详细介绍 VisualVM 官网介绍及使用说明 使用 VisualVM 进行性能分析及调优 使用VisualVm监控远程Linux服务器java进程 由于在 linux 服务器上面,使用远程

内存问题排查工具 --- valgrind

1. 概述 2. Valgrind 3. 内存泄漏监测 3.1. 示例代码 3.2. 编译它 3.3. 用Valgrind监测进程的内存泄漏 4. 悬挂指针 4.1. 示例代码 4.2. Valgrind运行结果 5. 多次释放同一个指针 5.1. 示例代码 5.2. Valgrind 监测 6. Valgrind的优缺点 6.1. Advantages 6.2. Disadvantages 7. Valgrind的其他工具 7.1. Cachegrind 7.2. Callgrind 7.3.