《Oracle DBA的UNIX 袖珍参考手册》笔记10

这一章节主要讲的是linux下的内存和CPU管理,非常简单的几个命令~

书上说的这个dmesg也很有用,用来查看启动信息~
[root@nero ~]# dmesg|grep "eth0"
divert: allocating divert_blk for eth0
eth0: registered as PCnet/PCI II 79C970A
eth0: no IPv6 routers present
[root@nero ~]#

free命令用来显示内存的使用情况。

语法结构:
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。

free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。

#free -b -s3
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每3秒更新一次。
[root@nero ~]# free
             total       used       free     shared    buffers     cached
Mem:       1034496     465048     569448          0      13688     368512
-/+ buffers/cache:      82848     951648
Swap:      1044216          0    1044216

显示分配的内存段
[root@nero ~]# ipcs - pmb

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 32768      gdm       600        393216     2          dest
0x734145b8 65537      oracle    640        287309824  16

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x5f178298 98304      oracle    640        154

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

[root@nero ~]#
-P 写入与共享内存标识有关的 SID(段标识)列表,以及保留在那个段中的字节数。
-m 写入一些关于活动共享内存段的信息。
-b 写入消息队列的队列上消息的最大字节数、共享内存段的大小、每个信号量集中信号量的数量。

说实话,我也看的不是很明白~

手动移除内存段分配
   有的情况下内存实例崩溃,但是 oracle  的内存段却没释放。可以使用ipcrm 来手动完成这个工作。

上句释放标识符为memid的共享内存,如果我们要释放所有的共享内存,只需要取出所有共享内存的ID,然后挨个ipcrm就行了,下面的程序正表达了此种方法的具体行为,经过我的测试,可以成功共释放共享内存:
#########shut.sh#########
#desp: scripts for releasing share memories
ipcs -m | awk '{if($2~/^[0-9]+$/)print $2}'  > out
cat out | while read shid
do
  ipcrm shm $shid
done
rm -fr out
要释放共享内存,只需要执行 sh shut.sh就行了

这里需要解释一下,如果第二个字段匹配^[0-9]+$/这个正则的话,那就打印第二个字段
^[0-9]+$/表示一串数字
[root@nero ~]# ipcs -m | awk '{if($2~/^[0-9]+$/)print $2}'
32768
65537

使用top命令来显示Unix 服务器的高CPU 资源占用会话。top显示每个CPU 的使用情况。top 的输出分两部分。第一部分显示每个处理器的负载情况,第二部分显示使用CPU最多的会话信息。
[root@nero ~]# top
top - 21:31:34 up  3:19,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  74 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.7% us,  2.0% sy,  0.0% ni, 97.0% id,  0.3% wa,  0.0% hi,  0.0% si
Mem:   1034496k total,   574304k used,   460192k free,    27724k buffers
Swap:  1044216k total,        0k used,  1044216k free,   451976k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
6391 root      15   0  140m 8388 2480 S  0.7  0.8   0:34.65 X
6671 oracle    16   0  7660 1532 1076 S  0.7  0.1   0:00.96 sshd
  634 root      16   0  3304  976  768 R  0.3  0.1   0:00.10 top
    1 root      16   0  2936  552  472 S  0.0  0.1   0:00.82 init
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/0
作为一个DBA 应该关心的内容有:  
Load averages:平均负载。如果大于 1说明服务器负荷过重。  
CPU states:CPU 信息概要。0.7% user 的意思是CPU 有 0.7%是用户占用,其他可按字面类推。  
Memory:Free 表明可用的内存数量。本例子中可用内存是 27724k。  
IDLE:CPU空闲百分比  
使用 sar  
    sar在 SVR4(是一个linux标准) 环境中,例如 HP-UX、Solaris 中很普及,在aix 中也可以用。Sar命令可以查看整体CPU 消耗情况,磁盘、内存、JFS buffer 使用情况等。常见的 sar使用
例子:
显示CPU 活动情况。
[root@nero oracle]# sar -u
Linux 2.6.9-78.ELsmp (nero)     2009年08月23日

21时50分01秒       CPU     %user     %nice   %system   %iowait     %idle
22时00分01秒       all      3.00      0.33      4.30      0.13     92.24
Average:          all      3.00      0.33      4.30      0.13     92.24

使用vmstat  
vmstat 是通用的UNIX 监控工具,vmstat 在 IRIX操作系统中是 osview。vmstat的第一个参数是间隔的秒数,也可以带第二个参数,表明显示多少次。
输出中一些重要的信息:  
         r
              运行队列。当这个值超过CPU数量的时候,服务器就有CPU瓶颈(可以通
              过lsdev -C|grep Process|wc -l  来获取CPU数量)
         pi
              page-in数量。这个参数非0暗示着系统缺少内存,内存被交换到磁盘。然而
              当程序刚使用的时候也可能导致page-in非0。为了找到真正原因,则检查sr
              列。如果sr也是非0,那么的确意味着缺少内存。
         sr
              扫描速率。如果扫描速率持续增加,那么页交换后台程序忙于分配内存页。

[root@nero oracle]# vmstat 3 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
1  0      0 347800  43064 486036    0    0    28    29 1014    80  1  4 94  1
1  1      0 347736  43068 486032    0    0     0    29 1009   174  2  3 95  0
[root@nero oracle]#
下面是CPU的一些信息:

        us
            用户占用CPU的百分比
        sy
            系统占用CPU的百分比
        id
            空闲CPU百分比
        wa
            等待CPU的百分比
用户和系统百分比之和(us+sy)接近 100 时,说明CPU 繁忙,但并不意味着 CPU 过载。sr 超过CPU 数量的时候意味着CPU 过载。当CPU 等待(wa)超过20 的时候,那么20%或者更多的处理时间在等待资源,通常是I/O。通常在备份或者导出等I/O 操作的时候这个百分比比较大;但如果正常的时候这个值一直挺高则也可能有I/O 瓶颈。

显示服务器平均负载情况(w命令)。

Unix 的w 命令用来显示高资源会话简单的信息。大多数的有经验的Oracle DBA 都会首先用这个命令来快速查看一下服务器负载情况,因为w 命令在几乎所有的Unix 下都可以用。

[root@nero oracle]# w
22:10:19 up  3:57,  2 users,  load average: 0.10, 0.12, 0.09
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
oracle   pts/1    192.168.0.1      18:19    0.00s  0.72s  0.14s sshd: oracle [p
oracle   :0       -                21:47   ?xdm?   3:55   1.10s /usr/bin/gnome-
上面的输出中的 load average 分别是过去 1分钟、5分钟、15分钟的负载情况。如果大于 1说明CPU 紧张。

使用 iostat  
iostat显示物理磁盘 I/O情况。下面的 3表明3秒钟显示一次。
[root@nero oracle]# iostat 3
Linux 2.6.9-78.ELsmp (nero)     2009年08月23日

avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.67    0.43    4.00    0.69   94.20

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.77        54.13        57.02     784694     826496
sda1              3.76        54.00        57.02     782802     826496
sda2              0.00         0.06         0.00        908          0

avg-cpu:  %user   %nice    %sys %iowait   %idle
           2.01    0.33    3.34    0.00   94.31

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.01         0.00        74.92          0        224
sda1              3.01         0.00        74.92          0        224
sda2              0.00         0.00         0.00          0          0
    
上面比较重要的列:  
Kb_read:过去的时间区间内读取得K 字节数。(第一个显示的是历史总计,因此要看变
化情况,应该看其它的时间区间。)  
Kb_wrtn: 过去的时间区间内写入得 K 字节数。  

汗,记住就行~





  


  




评论: 0 | 引用: 0 | 查看次数: 160
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启