Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2206490
  • 博文数量: 448
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 4979
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(448)

文章存档

2021年(180)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-08-28 18:22:59


奇怪的现象,关库时发现很慢


vmstat 中 procs 对应的 r 为 0,但是 b 一直有13个,结合memory的free看,剩余内存在减小,swap中没有换页,通常是 r 比较高,b 小于等于 r。

可以man vmstat看说明


vmstat 各部分详细说明
  1. procs
  2. r :运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
  3. b :在等待资源的进程数,比如正在等待I/O、或者内存交换等。

  4. -----------memory----------
  5. swpd :切换到内存交换区的内存数量(k表示)。 如果数值不变,说明每次没问题,如果数值很大,且不断的在变更,说明内存不够,或者内存溢出
  6.        如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
  7. free :当前的空闲页面列表中内存数量(k表示)
  8. buff :作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
  9. cache :作为page cache的内存数量,一般作为文件系统的cache,
  10.         如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。

  11. ---swap--
  12. si :由内存进入内存交换区数量。
  13. so :由内存交换区进入内存数量。

  14. 每当将内存页写入交换时,so 值都会增加。这仅在内存压力下发生。如果此值长时间不为零,则系统处于严重的内存压力之下。
  15. 更重要的计数器是si换入指标。理想情况下,该值应始终为零,因为我们从不期望再次需要分页存储上的逐出数据。这里一个舒适的小值是可以的。

  16. -----io----
  17. bi :从块设备读入数据的总量(读磁盘)(每秒kb)。
  18. bo :块设备写入数据的总量(写磁盘)(每秒kb)
  19.     这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

  20. --system--
  21. in :在某一时间间隔中观测到的每秒设备中断数。
  22. cs :每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

  23. 上下文切换属于cpu的一个范畴,简单讲就是cpu不能在同一时刻去处理多个任务,只能在一个时间点处理一个任务,但是每个任务分配的时间片是有限的,所以,任务任务1走完给它分配的时间片,就该任务2占用cpu了,这时候任务1到任务2就是上下文切换。

  24. -----cpu------
  25. us :用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
  26. sy :内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
  27. id :cpu处在空闲状态的时间百分比
  28. wa :IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,
  29.   这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)
  30. st :steal表示被偷走的cpu所占 时间百分比一般为0,不用关注,如果长期很高有可能是虚拟机超分cpu。

  31. https://man.linuxde.net/vmstat
vmstat -s 看着不错。

再看看top

有几个状态为D的oracle进程,D代表不能中断的休眠状态。
这个状态的进程一般是因为在等待IO,例如磁盘IO、网络IO等。在发出的IO请求得不到相应之后,进程一般就会转入uninterruptible sleep状态。对其kill -9也不起作用(重启主机可以)。

有两种方法可以找到有关 D 状态进程的更多信息:


  1. 1. ps -e|head -1;ps -eo ppid,pid,user,stat,pcpu,comm,wchan:32|grep oracle|grep -
  2. 这将打印所有oracle进程的列表,其中在进程运行时在最后一列中显示“-”,或者如果进程当前正在休眠,则显示进程正在休眠的内核函数的名称。这也包括可中断的过程。处于不间断睡眠状态的进程可以通过第四列确定,然后将显示 D。

  3. 2. echo w > /proc/sysrq-trigger
  4. 此命令生成报告和所有处于 D 状态的进程和完整内核堆栈的列表跟踪到 /var/log/messages。这显示了比上述第一个选项更多的信息。



主要都是dbw进程(当时忘了按c,应该是在写脏数据到磁盘(SGA较大)。

以下开始偏离主题:

查看内存压力的计算方法


这种情况下,内存使用率应该是
(free+buffers+cached) / total * 100 == (122880+131964+1491888) / 3083104 == 56.7%

对于 UEK4 内核

阅读(206) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~