64个cpu, oracle服务器依然占用 90%以上。

PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP

 22465 oracle     24G   24G cpu12   50    0   1:17:50 1.6% oracle/1

 19638 oracle     24G   24G cpu21    0    0   1:20:04 1.6% oracle/1

 28960 oracle     24G   24G cpu44    0    0   1:13:13 1.6% oracle/1

 17805 oracle     24G   24G cpu56   50    0   1:22:37 1.6% oracle/1

 17158 oracle     24G   24G cpu48    0    0   1:23:09 1.6% oracle/1

 13437 oracle     24G   24G cpu34   40    0   1:27:07 1.6% oracle/1

 13481 oracle     24G   24G cpu9     0    0   1:27:01 1.6% oracle/1

  9462 oracle     24G   24G cpu24    0    0   1:30:00 1.6% oracle/1

  8685 oracle     24G   24G sleep  100    -   0:06:01 0.1% oracle/1

 20095 root     4048K 3704K cpu8    49    0   0:00:05 0.0% prstat/1

  8681 oracle     24G   24G sleep   59    0   0:01:46 0.0% oracle/1

  6689 root       75M   47M sleep   59    0   0:01:53 0.0% crsd.bin/45

  8745 oracle     24G   24G sleep  100    -   0:01:06 0.0% oracle/1

  8741 oracle     24G   24G sleep  100    -   0:01:04 0.0% oracle/1

  8737 oracle     24G   24G sleep  100    -   0:01:07 0.0% oracle/1

 NPROC USERNAME  SWAP   RSS MEMORY      TIME  CPU

   172 oracle     25G   25G    20%  11:41:01  13%

    89 root      322M  427M   0.3%   0:05:36 0.1%

     1 smmsp    1384K 5768K   0.0%   0:00:00 0.0%

     1 noaccess  122M  190M   0.1%   0:00:25 0.0%

     6 daemon   6808K 8624K   0.0%   0:00:00 0.0%

 

Total: 269 processes, 720 lwps, load averages: 8.36, 8.88, 22.93

 

64个cpu,128g内存(操作系统目前使用16g)。

 

让人不解的是居然最近还老出现  cpu 占用 90%以上的现象

 

但是 查看cpu使用情况,感觉cpu分配还算平均,比如以上现象。

几个显示的前面的应该就是占用最大的了吧?(自己认为排在前面的就是占用cpu最多的了,没显示的应该都小于显示的)

总共才269个进程 ,就算每个 1.5% 64个cpu的占用也应该就 6%-8%,也不会 13%。

而且99%的时候,每个线程的占用率也就 1.6%,这样感觉就更离谱了!!

感觉配置这么高的机器,居然出现这样的现象,如果不能找到原因真是感觉羞愧!

 

请各位高手多提一些建议!

 

另外好像目前呈现经常报 java.net.socket:    broken piped

这个错误。

 

命令 mpstat 10 60

可以看到

CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl

CPU CPU ID migr

Minf 轻微故障(minor faults) smtx 不知道怎么翻译
Mjf 重要故障(major faults) srw 不知道怎么翻译

Xcal 处理机间的调用 syscl 系统调用次数
Intr 中断数 usr 用户时间所占百分比
Ithr 线程中断数(不包括时钟中断) sys 系统时间所占百分比
csw 上下文切换次数 wt 等待时间所占百分比
icsw 强制的上下文切换次数 idle 空闲时间所占百分比

最后4项加起来,就是应该是100

你现在的oracle还是99%么?你CPU抽样的时候,最好和ORCALE一起跑,如果oracle的进程还是那么高,你看看idle是多少,如果一个idle是0了,说明这个cpu跑满了,那就是oracle没有多核支持,如果idle也很高,说明CPU都很空闲, oracle有多核支持

不过无论怎样,都说明了,100%不是你的极限

[quote]几个显示的前面的应该就是占用最大的了吧?(自己认为排在前面的就是占用cpu最多的了,没显示的应该都小于显示的)[/quote]
一般来说,如果想找出最耗费CPU资源的进程。大多数使用top进程。然后强制按照CPU的资源使用来排序(在top中按下P),就可以很快知道了。

[quote]
Total: 269 processes, 720 lwps, load averages: 8.36, 8.88, 22.93[/quote]
系统整体负载(load).3个数据分别表示1、5、10分钟的平均负载。一般来说,负载值应该不会超过1,除非系统很忙。如果持续高于5的话,那么需要仔细查看到底是哪个进程在影响整体系统。

注意观察top命令的第二行,需要注意最好的zombie(僵死进程)数值。如果不是0,好好看看到底哪些进程变成僵尸了。ps命令可以查到

最好把僵死进程kill掉吧

最后把僵死进程kill掉。

希望能帮助到你

安了。你linux下面的top, 94%只是一个cpu用了94%,又不是所有cpu加起来94%

load 22对你64个cpu来说,简直就是个p啊

如果你load 64 ,跟单核 load 1 一样。。。top 6400% 与 单核 top 100% 一样,就是这个意思

这个是orcale的多核支持问题了

我记得oracle有按照cup购买和按照user购买的,不知道您是怎么购买的

你top以后,按下1,看看是不是一个cpu 99%