文档库 最新最全的文档下载
当前位置:文档库 › Linux性能监控之CPU篇

Linux性能监控之CPU篇

Linux性能监控之CPU篇
Linux性能监控之CPU篇

Linux性能监控之CPU篇

在这篇文章中,主要介绍CPU的一些基础知识.

首先介绍一下Linux kernel中的调度器(scheduler),调度器负责调度系统中的两种资源,一是线程,二是中断。调度器给不同资源不同的优先级。从高到低为:

1. 硬件中断(Hardware Interrupts)--这些请求由硬件触发,比如磁盘已经完成了

读写任务或是网卡受到了新的数据包。

2. 软件中断(Software Interrupts)--这里指的是维护内核运行的内核态软件中断。

比如内核的时钟管理进程。

3. 实时进程(Real time threads)--实时进程比内核本身具备更高的优先级,它可以

抢占内核的CPU时间片,在2.4内核是一个不可抢占的内核,它中不支持实时程序。

4. 内核进程(Kernel threads)--包括所以的内核程序。

5. 用户进程(User threads)-- 所有运行在用户态的进程。

关于CPU,有3个重要的概念:上下文切换(context switchs),运行队列(Run queue)

和使用率(utilization)。

上下文切换:

目前流行的CPU在同一时间内只能运行一个线程,超线程的处理器可以在同一时间运行多个线程(包括多核CPU),Linux内核会把多核的处理器当作多个单独的CPU来识别。

一个标准的Linux内核何以支持运行50~50000个进程运行,对于普通的CPU,内核会调度和执行这些进程。每个进程都会分到CPU的时间片来运行,当一个进程用完时间片或者被更高优先级的进程抢占后,它会备份到CPU的运行队列中,同时其他进程在CPU上运行。这个进程切换的过程被称作上下文切换。过多的上下文切换

会造成系统很大的开销。

运行队列:

每个CPU都会维持一个运行队列,理想情况下,调度器会不断让队列中的进程运行。进程不是处在sleep状态就是run able状态。如果CPU过载,就会出现调度器跟不上系统的要求,导致可运行的进程会填满队列。队列愈大,程序执行时间就愈长。“load”用来表示运行队列,用top 命令我们可以看到CPU一分钟,5分钟和15分钟内的运行队列的大

小。这个值越大表明系统负荷越大。

CPU使用率:

CPU使用率可分为一下几个部分

User Time—执行用户进程的时间百分比;

System Time—执行内核进程和中断的时间百分比;

Wait IO—因为IO等待而使CPU处于idle状态的时间百分比;

Idle—CPU处于Idle状态的时间百分比。

关于时间片和动态优先级:

时间片对于CPU来说是很关键的参数,如果时间片太长,就会使系统的交互性能变差,用户感觉不到并行。如果太短,又会造成系统频繁的上下文切换,使性能下降。对于IO Bound 的系统来讲并不需要太长的时间片,因为系统主要是IO操作;而对于CPU Bound的系统来

说需要长的时间片以保持cache的有效性。

每一个进程启动的时候系统都会给出一个默认的优先级,但在运行过程中,系统会根据进程的运行状况不断调整优先级,内核会升高或降低进程的优先级(每次增加或降低5),判断标准是根据进程处于sleep状态的时间。

IO Bound进程大部分时间在sleep状态,所以内核会调高它的优先级,CPU Bound进程会被内核惩罚降低优先级。因此,如果一个系统上即运行IO Bound进程,又运行CPU Bound

进程,我们会发现,IO Bound进程的性能不

会下降,而CPU Bound进程性能会不断下降。

我们运行一个CPU Bound的程序:cpu-hog。用ps命令可以看出它的优先级在不断下

降。

term1# ./cpu-hog

term2# while :; do ps -eo pid,ni,pri,pcpu,comm | egrep

'hog|PRI'; sleep 1; done

PID NI PRI %CPU COMMAND

22855 0 20 84.5 cpu-hog

PID NI PRI %CPU COMMAND

22855 0 18 89.6 cpu-hog

PID NI PRI %CPU COMMAND

22855 0 15 92.2 cpu-hog

PID NI PRI %CPU COMMAND

22855 0 15 93.8 cpu-hog

我们运行find命令,是一个IO Bound的程序,可以观察到它的优先级不断提高。

term1# find /

term2# while :; do ps -eo pid,ni,pri,pcpu,comm | egrep

'find|PRI'; sleep 1; done

PID NI PRI %CPU COMMAND

23101 0 20 0.0 find

PID NI PRI %CPU COMMAND

23101 0 21 4.0 find

PID NI PRI %CPU COMMAND

23101 0 23 3.5 find

PID NI PRI %CPU COMMAND

23101 0 23 4.3 find

PID NI PRI %CPU COMMAND

23101 0 23 4.2 find

PID NI PRI %CPU COMMAND

23101 0 23 4.4 find

如果同时运行2个程序就可看出明显的变化

# while :; do ps -eo pid,ni,pri,pcpu,comm | egrep 'find|hog';

sleep 1; done

23675 0 20 70.9 cpu-hog

23676 0 20 5.6 find

23675 0 20 69.9 cpu-hog

23676 0 21 5.6 find

23675 0 20 70.6 cpu-hog

23676 0 23 5.8 find

23675 0 19 71.2 cpu-hog

23676 0 23 6.0 find

23675 0 19 71.8 cpu-hog

23676 0 23 6.1 find

23675 0 18 72.8 cpu-hog

23676 0 23 6.2 find

23675 0 16 73.2 cpu-hog

23676 0 23 6.6 find

23675 0 14 73.9 cpu-hog

正如我们之前讨论的任何系统的性能比较都是基于基线的,并且监控CPU的性能就是以上3点,运行队列、CPU使用率和上下文切换。以下是一些对于CPU很普遍的性能要求:

1. 对于每一个CPU来说运行队列不要超过3,例如,如果是双核CPU就不要超过6;

2. 如果CPU在满负荷运行,应该符合下列分布,

a) User Time:65%~70%

b) System Time:30%~35%

c) Idle:0%~5%

3. 对于上下文切换要结合CPU使用率来看,如果CPU使用满足上述分布,大量的上下文切

换也是可以接受的。

常用的监视工具有,vmstat, top,dstat和mpstat.

# vmstat 1

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa

0 0 104300 16800 95328 72200 0 0 5 26 7 14 4 1 95 0

0 0 104300 16800 95328 72200 0 0 0 24 1021 64 1 1 98 0

0 0 104300 16800 95328 72200 0 0 0 0 1009 59 1 1 98 0

r表示运行队列的大小,

b表示由于IO等待而block的线程数量,

in表示中断的数量,

cs表示上下文切换的数量,

us表示用户CPU时间,

sys表示系统CPU时间,

wa表示由于IO等待而是CPU处于idle状态的时间,

id表示CPU处于idle状态的总时间。

dstat可以给出每一个设备产生的中断数:

# dstat -cip 1

----total-cpu-usage---- ----interrupts--- ---procs---

usr sys idl wai hiq siq| 15 169 185 |run blk new

6 1 91 2 0 0| 12 0 13 | 0 0 0

1 0 99 0 0 0| 0 0 6 | 0 0 0

0 0 100 0 0 0| 18 0 2 | 0 0 0

0 0 100 0 0 0| 0 0 3 | 0 0 0

我们可以看到这里有3个设备号15,169和185.设备名和设备号的关系我们可以参考文件

/proc/interrupts, 这里185代表网卡eth1.

# cat /proc/interrupts

CPU0

0: 1277238713 IO-APIC-edge timer

6: 5 IO-APIC-edge floppy

7: 0 IO-APIC-edge parport0

8: 1 IO-APIC-edge rtc

9: 1 IO-APIC-level acpi

14: 6011913 IO-APIC-edge ide0

15: 15761438 IO-APIC-edge ide1

169: 26 IO-APIC-level Intel 82801BA-ICH2

185: 16785489 IO-APIC-level eth1

193: 0 IO-APIC-level uhci_hcd:usb1

mpstat可以显示每个CPU的运行状况,比如系统有4个CPU。我们可以看到:

# mpstat –P ALL 1

Linux 2.4.21-20.ELsmp (localhost.localdomain) 05/23/2006

05:17:31 PM CPU %user %nice %system %idle intr/s

05:17:32 PM all 0.00 0.00 3.19 96.53 13.27

05:17:32 PM 0 0.00 0.00 0.00 100.00 0.00

05:17:32 PM 1 1.12 0.00 12.73 86.15 13.27

05:17:32 PM 2 0.00 0.00 0.00 100.00 0.00

05:17:32 PM 3 0.00 0.00 0.00 100.00 0.00

总结的说,CPU性能监控包含以下方面:

检查系统的运行队列,确保每一个CPU的运行队列不大于3.

确保CPU使用分布满足70/30原则(用户70%,系统30%)。

如果系统时间过长,可能是因为频繁的调度和改变优先级。

CPU Bound进程总是会被惩罚(降低优先级)而IO Bound进程总会被奖励(提高优先级)。

LINUX中限制CPU和内存占用率方法

查看cpu占用 在命令行中输入 top 即可启动 top top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。 使用top查看系统负荷 top命令可以动态监视系统负荷,包括CPU、内存的使用率和占用资源较多的进程详情等。 动态查看系统负荷(占用一个终端) top 显示后退出 top -n 1 以文本方式输出,以备其它程序使用 top -b 好了,我们现在来看限制CPU和内存占用率方法 脚本内容: 代码如下 #!/bin/sh UPID=`top -bn 1 | grep ^ *[1-9] | awk '{ if($9 ; 20 || $10 ; 25 && id -u $2 ; 500) print $1}'` for PID in $UPID do renice +10 $PID echo renice +10 $PID done

我对上面的脚本进行了修改,可以让其针对整个服务器的进程进行限制. 修改后的脚本: 代码如下 #!/bin/sh UPID=`top -bn 1 | grep ^ *[1-9] | awk '{ if($9 ; 50 || $10 ; 25 ) print $1}'` for PID in $UPID do renice +10 $PID echo renice +10 $PID done 可以将这个脚本放到cron中运行,让其每分钟检查一次: 代码如下 chmod +x limit.sh vi /etc/crontab */1 * * * * /bin/sh /root/soft_shell/limit.sh

linux系统性能监测

1.1 CPU消耗 在文件"/proc/stat"里面就包含了CPU的信息。 #cat /proc/stat 可通过mpstat系统性能检测工具对当前cpu使用情况进行查看,如下: 语法:mpstat [ options... ] [ [ ] ] [root@reg ~]# mpstat 1 Linux 2.6.9-89.ELsmp (WebServer) 08/18/09 10:08:25 CPU %user %nice %system %iowait %irq %soft %idle intr/s 10:08:26 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1005.00 10:08:27 all 0.00 0.00 0.00 0.12 0.00 0.00 99.88 1031.00 10:08:28 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1009.00 10:08:29 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1030.00 10:08:30 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1006.00 ............................ ............................ ............................ 各项的注释: CPU //处理器编号,all表示所有处理器的平均数值 Processor number. The keyword all indicates that statistics are calculated as averages among all processors. %user //用户态的CPU利用率百分比 Show the percentage of CPU utilization that occurred while executing at the user level

性能测试-linux资源监控

目录: Linux硬件基础 CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制。 CPU:CPU的性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括CPU的工作频率、Cache容量、指令系统和逻辑结构等参数。 查询指令:cat /proc/cpuinfo 内存:大脑中的记忆区块,将皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU 进行判断。 内存:影响内存的性能主要是内存主频、内容容量。 查询指令:cat /proc/meminfo 硬盘:大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些数据。 硬盘:容量、转速、平均访问时间、传输速率、缓存。 查询指令:fdisk -l (需要root权限) Linux监控命令 linux性能监控分析命令 vmstat vmstat使用说明 vmstat可以对操作系统的内存信息、进程状态、CPU活动、磁盘等信息进行监控,不足之处是无法对某个进程进行深入分析。 vmstat [-a] [-n] [-S unit] [delay [ count]] -a:显示活跃和非活跃内存 -m:显示slabinfo -n:只在开始时显示一次各字段名称。 -s:显示内存相关统计信息及多种系统活动数量。 delay:刷新时间间隔。如果不指定,只显示一条结果。 count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。-d:显示各个磁盘相关统计信息。 Sar sar是非常强大性能分析命令,通过sar命令可以全面的获取系统的CPU、运行队列、磁盘I/O、交换区、内存、cpu中断、网络等性能数据。 sar 命 令行

Linux下使用cpulimit限制进程的cpu使用率

Linux下使用cpulimit限制进程的cpu使用率 很用Linux时可能大家经常发现莫名其妙就变的非常慢,这时多半是后台进程使用的cpu和内存太多了。如何限制每个进程的cpu使用资源呢? 可以使用cpulimit限制每个进程的cpu使用率,使用率用百分百来表示。 安装cpulimit 使用源码安装 # cd /tmp # wget '网址http://' 网址:https://www.wendangku.net/doc/a116705819.html,/cpulimit/cpulimit-1.1.tar.gz # tar cpulimit-1.1.tar.gz # cd cpulimit-1.1 # make # cp cpulimit /usr/local/sbin/ # rm -rf cpulimit* Debian / Ubuntu 用户 使用apt-get更方便的安装 $ sudo apt - get update $ sudo apt - get install cpulimit 如何使用cpulimit? 限制firefox使用30% cpu利用率 # cpulimit -e firefox -l 30 限制进程号1313的程序使用30% cpu利用率 # cpulimit -p 1313 -l 30 根据进程名找出pid的方法 # ps aux | less # ps aux | grep firefox # pgrep -u vivek php-cgi # pgrep lighttpd 可以使用绝对路径限制进程的cpu利用率 # cpulimit -P /opt/firefox/firebox -l 30 单核cpu和多核cpu 单核cpu的使用率范围为0%-100%,四核cpu的使用率范围为0%-400%.

(整理)linux系统监控性能评估.

总控服务器性能: 一、Cpu性能评估 Vmstat命令的参数解释: 对上面每项的输出解释如下: procs r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU 不足,需要增加CPU。? b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 Memory swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。 free列表示当前空闲的物理内存数量(以k为单位)? buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。 cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。 so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。 一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。? IO项显示磁盘读写状况? Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。 Bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。 system 显示采集间隔内发生的中断数 in列表示在某一时间间隔中观测到的每秒设备中断数。 cs列表示每秒产生的上下文切换次数。 上面这2个值越大,会看到由内核消耗的CPU时间会越多。 CPU项显示了CPU的使用状态,此列是我们关注的重点。 us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu 时间多,但是如果长期大于50%,就需要考虑优化程序或算法。 sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。 根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。 id 列显示了CPU处在空闲状态的时间百分比。 wa列显示了IO等待所占用的CPU时间百分比。 wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。综上所述,在对CPU的评估中,需要重点注意

Linux常用的系统监控shell脚本

https://www.wendangku.net/doc/a116705819.html,下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。 1、查看主机网卡流量 1.#!/bin/bash 2. 3.#network 4. 5.#Mike.Xu 6. 7.while : ; do 8. 9.time=’date +%m”-”%d” “%k”:”%M’ 10. 11.day=’date +%m”-”%d’ 12. 13.rx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 14. 15.tx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 16. 17.sleep 2 18. 19.rx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 20. 21.tx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 22. 23.rx_result=$[(rx_after-rx_before)/256] 24. 25.tx_result=$[(tx_after-tx_before)/256] 26. 27.echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps” 28. 29.sleep 2 30. 31.done 2、系统状况监控 1.#!/bin/sh 2. 3.#systemstat.sh

linux c程序获取cpu使用率及内存使用情况

想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了。方法就是读取proc下的文件来获取了。cpu使用率:/proc/stat ,内存使用情 况:/proc/meminfo 看程序: /*************************************************************** * @file: statusinfo.c * * @brief: 从linux系统获取cpu及内存使用情况 * * @version 1.0 * * @author 抹黑 * * @date 2009年3月17日 * ***************************************************************/ typedef struct PACKED //定义一个cpu occupy的结构体 { char name[20]; //定义一个char类型的数组名name有20个元素 unsigned int user; //定义一个无符号的int类型的user unsigned int nice; //定义一个无符号的int类型的nice unsigned int system;//定义一个无符号的int类型的system unsigned int idle; //定义一个无符号的int类型的idle }CPU_OCCUPY; typedef struct PACKED //定义一个mem occupy的结构体 { char name[20]; //定义一个char类型的数组名name有20个元素 unsigned long total; char name2[20]; unsigned long free; }MEM_OCCUPY; get_memoccupy (MEM_OCCUPY *mem) //对无类型get函数含有一个形参结构体类弄的指针O

这30个Linux系统监控工具,每个系统管理员都应该知道

这30个Linux系统监控工具,每个系统管理员都应该知道 是否需要监控Linux服务器的性能?试试这些内置的命令和附加工具。大多数发行版都附带了大量的Linux监控工具,这些工具提供了可以用来获取系统活动信息的指标。你可以使用这些工具来查找性能问题的可能原因。下面讨论的命令是关于系统分析和调试Linux服务器问题的一些最基本的命令,例如:1、找出系统的瓶颈2、磁盘(存储)瓶颈3、CPU 和内存瓶颈4、网络瓶颈。01top—进程活动监视命令top命令显示Linux进程。它提供了一个运行系统的动态实时视图,即实际的流程活动。默认情况下,它显示在服务器上运行的cpu密集型任务,并每5秒钟更新一次列表。图01:Linux top命令常用热键和top Linux监视工具下面是一些有用的热键:热键使用t显示摘要信息m显示内存信息A对不同系统资源的顶级用户进行排序。能快速识别系统里的性能需求。f进入一个交互式配置屏幕。有助于为特定的任务置顶。o优先进行交互式地选择r发布renice命令。k问题终止命令。z打开或关闭color/mono02vmstat—虚拟内存统计vmstat命令报告有关进程、内存、分页、阻塞IO、陷阱和cpu活动的信息。示例输出:显示内存使用的slab信息获取关于活动/非活动内存页的信息。03w—找出谁在登录,他们在做什么w命令显示当前机器上的用户及其进程的信息。示

例输出:04uptime—Linux系统运行了多长时间可以使用uptime命令查看服务器运行了多长时间。当前时间,系统运行的时间,当前登录的用户数量,以及过去1、5和15分钟的系统负载平均值。输出:1可视为最优荷载值。负载可以从系统切换到系统。对于单个CPU系统,1 - 3和SMP系统6-10的负载值是可以接受的。05ps—显示Linux进程ps命令将报告当前进程的快照。要选择所有进程,请使用A或E 选项:示例输出: ps和top一样,但是提供了更多的信息。显示长格式输出打开额外的全模式(它将显示传递到过程的命令行参数):显示线程(LWP和NLWP)观察进程后的线程在服务器上打印所有进程。想要打印一个进程树?#pstree获取Linux进程的安全信息。打印每一个作为用户Vivek运行的进程。将ps命令以用户定义的格式配置输出。尝试只显示Lighttpd的进程id。或者或者打印PID 55977的名称。10大内存消耗过程。显示10个CPU消耗过程。06free—Linux 服务器内存使用情况free命令显示系统中空闲和使用的物 理和交换内存的总量,以及内核使用的缓冲区。示例输出:07iostat—Montor Linux平均CPU负载和磁盘活动iostat命令报告中央处理单元(CPU)统计数据和设备、分区和网络文件系统(NFS)的输入/输出统计数据。示例输出:08sar –Monitor,收集和报告Linux系统活动sar命令用于收集、报告和保存系统活动信息。要查看网络计数器,请输入:网络计

Linux查看CPU和内存使用情况

Linux 查看CPU 和内存使用情况 在系统维护的过程中,随时可能有需要查看CPU 使用率,并根据相应信息分析系统状况的需要。在CentOS 中 可以通过top 命令来查看CPU 使用状况。运行top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式-- 用基于top 的命令,可以控制显示方式等等。退出 top 的命令为q (在top 运行中敲q 键一次)。 top 命令是Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows 的任务管理器 可以直接使用top 命令后,查看%MEM 的内容。可以选 择按进程查看或者按用户查看,如想查看oracle 用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID :进程的ID USER :进程所有者 PR:进程的优先级别,越小越优先被执行 NInice :值 VIRT :进程占用的虚拟内存 RES:进程占用的物理内存

SHR :进程使用的共享内存 僵死状态, N 表示该进程优先值为负数 %CPU :进程占用CPU 的使用率 %MEM :进程使用的物理内存和总内存的百分比 TIME+ :该进程启动后占用的总的 CPU 时间,即占用 CPU 使用时间的累加值。 COMMAND :进程启动命令名称 操作实例 : 即可启动 top top 的全屏对话模式可分为 3 部分:系统信息栏、命令 输入栏、进程列表栏。 第一部分 -- 最上部的 系统信息栏 第一行( top ): 00:11:04”为系统当前时刻; 3:35”为系统启动后到现在的运作时间; “2 users ”为当前登录到系统的用户,更确切的说 是登录到用户的终端数 -- 同一个用户同一时间对系统多个 终端的连接将被视为多个用户连接到系统,这里的用户数也 将表现为终端的数目; S :进程的状态。 S 表示休眠, R 表示正在运行, Z 表示 在命令行中输入 “- ” top ”

Linux服务器运行状况全面监测下

四、服务器主板工作状况监测: 服务器主板以及CPU工作温度是否正常是服务器稳定的核心。迄今为止还没有一种CPU散热系统能保证永不失效。失去了散热系统保护伞的“芯”,往往会在几秒钟内永远停止“跳动”。值得庆幸的是,聪明的工程师们早已开发出有效的处理器温度监控、保护技术。以特殊而敏锐的“嗅觉”随时监测CPU的温度变化,并提供必要的保护措施,使CPU免受高温下的灭顶之灾。lm_sensors可以有效监控主板和CPU的工作电压、风扇转速、温度等核心数据。软件安装: #mv lm_sensors-2.8.8.tar.gz /usr/lo ca l/src/ #cd /usr/local/src/ #tar zxvf lm_sensors-2.8.8.tar.gz #cd /usr/local/src/lm_sensors-2.8.8 #tar xzf i2c-2.8.8.tar.gz #make clean ;make dep ;make all ;make install #/sbin/depmod -a 修改配置文件:“/etc/ld.so.conf”加入一行:/usr/local/lib #ldconfig #sensors-detect #扫描主板所有芯片,选择缺省选项即可(按会车)# 加载模块,注意主板不一定相同。 #modprobe i2c-isa #modprobe lm78 #modprobe sis5595 开始检测,见图-8:

#sensors 图 8 lm_sensors 工作界面 可以看到主板温度、CPU温度电压以及风扇转速等信息非常清晰。 高级应用:定时检测主板运行情况: 这里可以使用Linux组合命令: #watch --interval=450 “sensors ” 这样每隔450秒运行因此sensors 令,就可以得知主板运行情况。 五、P2P通信监测 P2P(Peer-to-Peer)是一种用于文件交换的新技术,通过Internet允许建立分散的、动态的、匿名的逻辑网络。P2P为对等连接或对等网络,点对点网络技术,可应用于文件共享交换,深度搜索、分布计算等领域。它允许个体的PC通过Internet共享文

IT运维之Linux服务器监控方案

IT运维之Linux服务器监控方案 随着Linux应用日益广泛,绝大部分的网络服务器都使用Linux操作系统。为了全面掌握网络服务器的运行状况和趋势,需要对服务器进行全面的监控。 利用Linux发行版搭建一个网络服务器可能对于许多人都是一件很容易的事情,但网络服务器正式上线后,服务器数据流动、连接数、网络流量、系统负荷等各方面都会增加,安全问题也随之而来,再考虑到日志、数据库的重要性,我想无论是哪一位系统管理员,都应该迫不及待地想把服务器上线的前期工作做好吧。 那我们究竟需要做好哪些工作准备呢?之前有看过一篇文章说到系统管理员应该定期完成的九件事情,我分析过后,认为有几件事情是必须得做的。首先是备份,做好定时备份策略,备份所有你认为重要的数据,并且定期检查你的备份是否有效、全面;日志轮换,无论你想用哪种轮换方式,控制日志增长避免驱动器已满是你的目的;做一定的安全措施,如防火墙iptables的访问控制,用denyhosts防止黑客远程暴力破解,mysql远程登录权限等等;最后就是服务器监控,也是我主要想讲述的内容。 对于服务器的硬件资源、性能、带宽、端口、进程、服务等都必须有一个可靠和持续的监测,统计分析每天的各种数据,从而能及时反映出服务器哪里存在性能瓶颈、安全隐患等。另外是要有危机意识,就是了解服务器有可能出现哪些严重的问题,出现这些问题后该如何去迅速处理。比如数据库的数据丢失,日志容量过大,被黑客入侵等等。说到底,预防是关键。 监控,是预防的其中的一项重要工作。这里先说说我需要监控的内容。系统负载、cpu 使用率、内存占用、磁盘空间、网络流量、端口、进程、apache或tomcat的连接数、mysql 的运行状态这些都是我想要监控的东西,但又能做到多少呢,我只能尽力而为了。要了解服务器每时每刻的整体运行状态,单靠几个Linux自带的性能监测命令是很难实现的。所以,利用shell脚本和开源监控工具进行服务器监控成为了我的两个主要的选择。 利用shell脚本监控能够很好把握的监控的内容,时间,警告峰值,以及方便地进行告警通知,自定义监控日志内容等等;而许多开源的监控工具都十分方便和实用,比如有zabbix、cacti、nagios等,而且能够针对不同的监控内容,生成好看的便于观察的曲线图,多数的开源监控工具都比较成熟,至于哪个好用就得用过才知道。由于这些监控工具都有许多热血人士写了安装和使用的文档,我这里就不写进来了。想了解下的朋友也可以到我的博客上走走,在这里我主要是把自己写的一些shell监控脚本分享一下,希望大家能给点意见。 我这里写了四个脚本(performance.sh 性能监控,process.sh 进程监控,network.sh 流量监控,tongji.sh流量分析统计),并使用crontab定时执行脚本进行监控数据的记录,形成每天的监控日志放在如下相应的文件夹,并且超过自己设定的告警值后发邮件通知,如果是腾讯企业邮箱,163邮箱那些有免费短信通知功能的可以尝试一下,收到邮件告警后很快就能收到短信了,十分方便。 性能监控脚本 ############################################################################## #!/bin/bash #监控cpu系统负载 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` cpu_num=`grep -c 'model name' /proc/cpuinfo`

Linux查看CPU和内存使用情况

Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看CPU 使用率,并根据相应信息分析系统状况的需要。在Ce ntOS 中,可以通过top 命令来查看CPU 使用状况。运行top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式-- 用基于top 的命令,可以控制显示方式等等。退出top 的命令为q (在top 运行中敲q 键一次)。 操作实例: 在命令行中输入“top” 即可启动top top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。 第一部分-- 最上部的系统信息栏: 第一行(top): “00:11:04”为系统当前时刻; “3:35”为系统启动后到现在的运作时间; “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数-- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目; “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程; 第二行(Tasks): “59 total”为当前系统进程总数; “1 running”为当前运行中的进程数; “58 sleeping”为当前处于等待状态中的进程数; “0 stoped”为被停止的系统进程数; “0 zombie”为被复原的进程数; 第三行(Cpus): 分别表示了CPU 当前的使用率; 第四行(Mem): 分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量; 第五行(Swap): 表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(S wap)被频繁使用的情况,将被视作物理内存不足而造成的。 第二部分-- 中间部分的内部命令提示栏: top 运行中可以通过top 的内部命令对进程的显示方式进行控制。内部命令如下表: s - 改变画面更新频率 l - 关闭或开启第一部分第一行top 信息的表示

Unix,Linux 磁盘 IO 性能监控命令

Unix/Linux 磁盘I/O 性能监控命令 磁盘I/O 性能监控指标和调优方法 在介绍磁盘I/O 监控命令前,我们需要了解磁盘I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘I/O 性能监控的指标主要包括: 指标1:每秒I/O 数(IOPS 或tps) 对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘I/O, 磁盘的IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。 指标2:吞吐量(Throughput) 指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。 指标3:平均I/O 数据尺寸 平均I/O 数据尺寸为吞吐量除以I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均I/O 数据尺寸小于32K,可认为磁盘使用模式以随机存取为主;如果平均每次I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。 指标4:磁盘活动时间百分比(Utilization) 磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过70%,应用进程将花费较长的时间等待I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。 指标5:服务时间(Service Time) 指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过20ms,一般可考虑会对上层应用产生影响。 指标6:I/O 等待队列长度(Queue Length) 指待处理的I/O 请求的数目,如果I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O 等待队列长度。 指标7:等待时间(Wait Time) 指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果I/O 请求持续超出磁盘处理能力,意味着来不及处理的I/O 请求不得不在队列中等待较长时间。 通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合CPU、内存、交换分区的使用状况,不难发现磁盘I/O 潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘I/O 性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考: 1.调整数据布局,尽量将I/O 请求较合理的分配到所有物理磁盘中。 2.对于RAID 磁盘阵列,尽量使应用程序I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适 的RAID 方式,如RAID10,RAID5。 3.增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分I/O 请求会因为丢失 而重新发出,这将降低性能。 4.应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。

Linux实时监控系统的实现

Vol.28No.5 M ay 2012 赤峰学院学报(自然科学版)Journal of Chifeng University (Natural Science Edition )第28卷第5期(下) 2012年5月Linux操作系统具有灵活稳定、成本低、实时性、伸缩性能好等特性,非常适于开发嵌入式系统,因此嵌入式Linux系统发展迅速,Linux实时监控系统也得到不断突破和实现.嵌入式系统的优势特性使其渗透到很多领域,为我们的生产发展提供了重要操作手段,同时也推动了计算机网络的安全发展.如今国民经济的各个领域都能找到Linux实时监控系统的影子,大到工业企业生产的实时监测,小到我们常见的环境监测等.Linux实时监控系统的实现方式多种多样,不同的监控系统有不同的监控要求,Linux都能以其强大的功能不断实现.1 Linux 概述及其优点 1.1Linux概述 对于大部分非计算机专业的人士,可能对Linux比较陌生.Linux是一种操作系统,它是UNIX操作系统的一个克隆版本,同时UNIX操作系统又是其成长发展的重要支柱之一.而UNIX则是一个支持多种处理器具有强大功能的操作系统,具备高可靠性、成熟性、开放性、伸缩性等优势,是一种广泛使用的操作系统.Linux把系统中的硬件设备、软件设备、操作系统、各类命令等都设置为拥有各自特色的文件,Linux内核是该系统的关键,它是一个系统软件,主要用于为硬盘提供抽象层、完成多项任务、对文件系统实时控制等.为什么说Linux是UNIX的克隆了?主要是因为Linux内核是由汇编语言以及C语言组成,是一个符合UNIX基本思想的类操作系统.1.2 Linux的优点 目前,Linux在计算机界广为流行,主要因为它具有以下优点:第一,该系统完全免费,用户还可以自由修改其源代码,这对于计算机程序员来说极具诱惑,他们可以根据自己的思维对其修改,同时也促进了Linux的不断完善与壮大.第二,具备兼容性,这使它可以运行较为常见的DOS、Windows程序,使用户可以从Windows转到Linux.第三,Linux支持多用户、多任务基本特点,用户对自己的文件有特殊权利,各用户互不影响,Linux的每个软件都有其特定用途,它可以使多个程序独立运行实现多任务功能.第四,Linux拥有图形、 字符的良好界面,并且类似于Windows,用户可用鼠标进行操作.第五,Linux还有安全性高、功能强大、稳定性好等特色,Linux的网络功能和内核紧密相连使其优于其他的操作系统,另外它还采取了大量的安全、稳定措施.第六,Linux可在多种硬件平台上有效运行,它的高系统性能也是基于多个处理器平台同时工作.此外,由于Linux经常被用于嵌入式操作系统,它还可以在机顶盒、游戏机、移动电话、摄影机等设备上运行.Linux具有成本低、灵活、可设置性等以上所述优点,它被广泛用于各种设置中,不少产品都利用Linux进行驱动以及它的硬件式网络防火墙和路由器功能.2Linux 实时监控系统的介绍及其实现的重要性研究2.1 对Linux实时监控系统的介绍 计算机技术的发展为不仅人们的生活提供了各种便利,还在实时监控系统这一领域做出了重要贡献.实时监控系统包括软实时和硬实时两种类型的系统,它对时序、逻辑要求比较高.实时监控系统的主要目的在于实时监控各种突发事件,及时处理各种中断,这就要求实时监控系统必须有多种中断级别、 多任务等特征.而Linux正是具备了实时监控系统所需的各种要求,被广泛使用与各种实时监控系统中.Linux实时监控系统是利用Linux操作系统确保在一定时间范围内完成实时监控任务的操作系统.比如,Linux嵌入式网络视频监控系统就是一种,并以其方便、信息量大等优势被广泛应用于交通、银行、办公楼等需实时监控的场所.2.2 实现Linux实时监控系统的具体途径 Linux实时监控系统对我国社会生活的各个方面都发挥着重要作用,如何充分利用这种系统实现其应有价值了?这就要求广大研发人员根据实际需要,不断实现各种基于 Linux实时监控系统的实现 王 苹1,王彦2 (1.福州大学阳光学院,福建 福州 350008;2.福建省科学技术信息研究所,福建福州 350001) 摘要:以NUIX 为背景开发的Linux ,是目前相当流行的一种操作系统.Linux 内核具有较高的实时性,随着实时监控具体要求的日益增加,Linux 实时监控系统得到迅速发展,也正是为了满足这些监控需求,大量的实用性监控系统先后出现,并为人们的生产生活提供便利.本文首先介绍了Linux 以及它的优点,然后阐述了Linux 实时监控系统和实现该系统的基本原理,最后分析了基于Linux 的适时监控系统的具体应用和实现. 关键词:Linux ;实时监控系统;实现中图分类号:TP316 文献标识码:A 文章编号:1673-260X (2012)05-0027-02 27--

在Linux系统中使用w命令和uptime命令查看系统负载

在Linux系统中使用w命令和uptime命令查看系统负载 在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top或者atop命令,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令,相信大家比较熟悉了,它主要是用来查询系统最近一次启动后运行了多长时间,而w命令则相对就冷门一些了,下面就详细介绍如何使用这两个命令: 1. w命令 [root@tektea ~]# w 14:44:27 up 62 days, 3 min, 2 users, load average: 0.00, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 218.18.74.196 13:38 1:01m 0.00s 0.00s -bash root pts/1 218.18.74.196 14:43 0.00s 0.00s 0.00s w 使用man w查询的Linux对该命令的介绍是“Show who is logged on and what they are doing.”,w命令可查询登录当前系统的用户信息,以及这些用户目前正在做什么操作,这些信息对于Linux系统管理员来说都是价值的,另外其中的load average后面的三个数字则显示了系统最近1分钟、5分钟、15分钟的系统平均负载情况。 2. uptime命令 [root@tektea ~]# uptime 14:51:15 up 62 days, 10 min, 2 users, load average: 0.02, 0.01, 0.00 uptime命令回显中的load average所表示的意思和w命令相似,都是表示过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。 这里需要注意的是load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数,例如,本输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲,比如本例中的输出,CPU是比较空闲的。

如何使用Shell语言对Linux系统资源进行监控

如何使用Shell语言对Linux系统资源进行监控 通常所说的Shell指的是Linux/Unix系统下的Shell脚本语言。它有不同的版本,比如sh, bash, ksh, csh, tcsh,最常用的是Bash。在华迪教育的IT 培训中,有专门涉及到Shell语言对Linux系统资源的监控课程。这里总结出来,供同学们参考。 概述: Shell 语言是一种交互语言,也就是用户输入一条命令,它就运行一条; 也可以用shell的语法结构将多行的命令放到一个文件中,这个文件被称为Shell 脚本。我们可以运行这个Shell脚本从而完成你想要的工作。它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上 Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。它没有一般编程语言的“编译 - 链接 - 运行”过程。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的 Shell 程序与其他应用程序具有同样的效果。当然,Shell 功能也是很强大的。Shell 有多种类型,其中最常用的几种是 Bourne shell(sh)、C shell(csh)和 Korn shell(ksh)。三种shell 各有优缺点,Linux 操作系统缺省的 shell 一般是 Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,bash 的命令语法是 Bourne shell 命令语法的超集,并且在 Bourne shell 的基础上增加、增强了很多特性。 检查进程是否存在 在对进程进行监控时,我们一般需要得到该进程的 ID,进程 ID 是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进程,下面的函数 GetPID 给出了获取指定用户下指定进程名的进程 ID 功能(目前只考虑这个用户下启动一个此进程名的进程),它有两个参数为用户名和进程名,它首先使用 ps 查找进程信息,同时通过 grep 过滤出需要的进程,最后通过sed 和 awk 查找需要进程的 ID 值(此函数可根据实际情况修改,比如需要过滤其它信息等)。

linux下监控用户的操作记录-new

linux下监控用户的操作记录 这个方案会在每个用户退出登录时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器 操作如下: 确保存在/data目录 把下面内容添加到/etc/profile文件底部 [root@vm17218 /]# vi /etc/profile 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19........ DT=`date "+%Y-%m-%d_%H:%M:%S"` export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| \ awk '{print $NF}'|sed -e 's/[()]//g'`] " echo "" > .bash_history if [ ! -d /data/history ] then mkdir /data/history 2>/dev/null chmod 777 /data/history fi if [ ! -d /data/history/${LOGNAME} ] then mkdir /data/history/${LOGNAME} 2>/dev/null chmod 777 /data/history/${LOGNAME} fi export PROMPT_COMMAND='\ if [ "$(history 1)" != "$LAST_CMD" ]; then export LAST_CMD="[$OLD_PWD]$(history 1)"; echo "$LAST_CMD" >> "/data/history/${LOGNAME}/${LOGNAME}_shell_cmd_$DT" 2>/dev/null fi ; export LAST_CMD="$(history 1)"; export OLD_PWD=$PWD;'

linux下监控软件

linux 设备/主机性能监测: mrtg----》》》监控流量,cup负载,tcp连接数,磁盘空间等等一般用来做流量监控,配置简单 nagios--->>>> 用来监控主机与服务存活状态,也可以监控负载与磁盘空间等等,带邮件与短信告警,配置稍微复杂点。 cacti----》》》(仙人掌)CPU负载,内存占用,运行进程数,磁盘空间,网卡流量等各种数据信息监测,强大的绘图功能,十分漂亮,插件无数,可监控几乎所有内容,缺点是安装配置复杂,但现在有一键安装盘,方便的很。 MRTG(Multi Router Traffic Grapher,多路由测量绘图工具)----》》》通过适当配置也可以监测CPU负载,WEB页面访问量等性能数据;主要基于SNMP(简单网络管理协议)采集设备的流量数据,并根据这些信息生成包含PNG图片的HTML监测页面,以图形化的方式显示被监测设备的测量数据。 Linux网络流量监测: BandwidthD----》》》是一个轻量级的局域网流量监测套件可以用来跟踪网络中TCP\IP数据通讯的流量,并以带流量图的WEB网页形式显示信息;基于网卡嗅探的模式攻取数据并统计

流量,一般安装在网关服务器上,可以针对不同的IP地址分别计算HTTP、TCP、udp、vpn、p2p等各种协议的流量,适合小型公司 NTOP(Network Top网络流量排名)----》》》是一个功能强大,可灵活扩展的局域网流量实时监测工具,能够自动筛选出流量占用最高的主机,提供直观的流量图形,并可以按不同的时间段,应用层协议等显示详情;可以安装在局域网内的任何一台机器上;本身可提供监听HTTP应用端口的功能,无需依赖于其它WEB服sss务软件(httpd) Linux漏洞监测 nessus----》》》是目前比较流行的网络弱点(漏洞)扫描与分析工具,并随时更新其买点数据库,包括服务器端(nessusD)和用户端(nessusClient)核心的扫描工作和插件扩展由服务器端进行,用户端可以指定扫描策略和目标。服务器端能够限制用户扫描哪些目标网络或主机,并通过密码或密钥的方式对用户进行登录认证 NMAP----》》》端口扫描类网络安全工具,主要扫描内部网络

相关文档
相关文档 最新文档