높은 로드 평균, 낮은 CPU 사용량 - 왜 그렇습니까?

높은 로드 평균, 낮은 CPU 사용량 - 왜 그렇습니까?

우리는 웹 애플리케이션에서 큰 성능 문제를 발견했으며 병목 현상을 찾으려고 노력하고 있습니다. 저는 시스템 관리자가 아니기 때문에 잘 이해되지 않는 부분이 있습니다. 일부 기본 조사에 따르면 CPU가 유휴 상태이고 사용 가능한 메모리가 많고 스왑이나 I/O가 없지만 로드 평균이 높은 것으로 나타났습니다.

이 서버의 소프트웨어 스택은 다음과 같습니다.

. 솔라리스 10. 자바 1.6. WebLogic 10.3.5(8개 도메인)

이 서버에서 실행되는 애플리케이션은 다른 서버의 Oracle 데이터베이스와 통신합니다.

서버에는 32GB RAM과 10개의 CPU가 있습니다.

prstat -Z를 실행하면 다음이 제공됩니다.

   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
  3836 ducm0101 2119M 2074M cpu348  58    0   8:41:56 0.5% java/225
 24196 ducm0101 1974M 1910M sleep   59    0   4:04:33 0.4% java/209
  6765 ducm0102 1580M 1513M cpu330   1    0   1:21:48 0.1% java/291
 16922 ducm0102 2115M 1961M sleep   58    0   6:37:08 0.0% java/193
 18048 root     3048K 2440K sleep   59    0   0:06:02 0.0% sa_comm/4
 26619 ducm0101 2588M 2368M sleep   59    0   8:21:17 0.0% java/231
 19904 ducm0104 1713M 1390M sleep   59    0   1:15:29 0.0% java/151
 27809 ducm0102 1547M 1426M sleep   59    0   0:38:19 0.0% java/186
  2409 root       15M   11M sleep   59    0   0:00:00 0.0% pkgserv/3
 27204 root       58M   54M sleep   59    0   9:11:38 0.0% stat_daemon/1
 27256 root       12M 8312K sleep   59    0   7:16:40 0.0% kux_vmstat/1
 29367 root      297M  286M sleep   59    0  11:02:13 0.0% dsmc/2
 22128 root       13M 6768K sleep   59    0   0:10:51 0.0% sendmail/1
 22133 smmsp      13M 1144K sleep   59    0   0:01:22 0.0% sendmail/1
 22003 root     5896K  240K sleep   59    0   0:00:01 0.0% automountd/2
 22074 root     4776K 1992K sleep   59    0   0:00:19 0.0% sshd/1
 22005 root     6184K 2728K sleep   59    0   0:00:31 0.0% automountd/2
 27201 root     6248K  344K sleep   59    0   0:00:01 0.0% mount_stat/1
 20964 root     2912K  160K sleep   59    0   0:00:01 0.0% ttymon/1
 20947 root     1784K  864K sleep   59    0   0:02:22 0.0% utmpd/1
 20900 root     3048K  608K sleep   59    0   0:00:03 0.0% ttymon/1
 20979 root       77M   18M sleep   59    0   0:14:13 0.0% inetd/4
 20849 daemon   2856K  864K sleep   59    0   0:00:03 0.0% lockd/2
 17794 root       80M 1232K sleep   59    0   0:06:19 0.0% svc.startd/12
 17645 root     3080K  728K sleep   59    0   0:00:12 0.0% init/1
 17849 root       13M 6800K sleep   59    0   0:13:04 0.0% svc.configd/15
 20213 root       84M   81M sleep   59    0   0:47:17 0.0% nscd/46
 20871 root     2568K  600K sleep   59    0   0:00:04 0.0% sac/1
  3683 ducm0101 1904K 1640K sleep   56    0   0:00:00 0.0% startWebLogic.s/1
 23937 ducm0101 1904K 1640K sleep   59    0   0:00:00 0.0% startWebLogic.s/1
 20766 daemon   5328K 1536K sleep   59    0   0:00:36 0.0% nfsmapid/3
 20141 daemon   5968K 3520K sleep   59    0   0:01:14 0.0% kcfd/4
 20093 ducm0101 2000K  376K sleep   59    0   0:00:01 0.0% pfksh/1
 20797 daemon   3256K  240K sleep   59    0   0:00:01 0.0% statd/1
  6181 root     4864K 2872K sleep   59    0   0:01:34 0.0% syslogd/17
  7220 ducm0104 1268M 1101M sleep   59    0   0:36:35 0.0% java/138
 27597 ducm0102 1904K 1640K sleep   59    0   0:00:00 0.0% startWebLogic.s/1
 27867 root       37M 4568K sleep   59    0   0:13:56 0.0% kcawd/7
 12685 ducm0101 4080K  208K sleep   59    0   0:00:01 0.0% vncconfig/1
ZONEID    NPROC  SWAP   RSS MEMORY      TIME  CPU ZONE
    42      135   22G   19G    59%  87:27:59 1.2% dsuniucm01

Total: 135 processes, 3167 lwps, load averages: 54.48, 62.50, 63.11

내가 아는 한, CPU는 대부분의 시간 동안 유휴 상태이지만 로드 평균이 높아서 이상하게 보입니다. 기억력은 문제가 아닌 것 같습니다.

vmstat 15를 실행하면 다음이 제공됩니다.

 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr s0 s1 s4 sd   in   sy   cs us sy id
 0 0 0 32531400 105702272 317 1052 126 0 0 0 0 13 13 -0 8 9602 107680 10964 1 1 98
 0 0 0 15053368 95930224 411 2323 0 0 0 0 0 0  0  0  0 23207 47679 29958 3 2 95
 0 0 0 14498568 95801960 3072 3583 0 2 2 0 0 3 3  0 21 22648 66367 28587 4 4 92
 0 0 0 14343008 95656752 3080 2857 0 0 0 0 0 3 3  0 18 22338 44374 29085 3 4 94
 0 0 0 14646016 95485472 1726 3306 0 0 0 0 0 0 0  0  0 24702 47499 33034 3 3 94

내가 이해한 바에 따르면 CPU는 대부분 유휴 상태이고 대기열에 실행을 기다리는 프로세스가 없으며 스와핑이 거의 발생하지 않습니다.

iostat 15를 실행하면 다음이 제공됩니다.

   tty        sd0           sd1           sd4           ssd0           cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
   0  676 324  13    8  322  13    8    0   0    0  159   8    0    1  1  0 98
   1 1385   0   0    0    0   0    0    0   0    0    0   0    0    3  4  0 94
   0  584  89   6   24   89   6   25    0   0    0  332  19    0    2  1  0 97
   0  296   0   0    0    0   0    0    0   0    0    0   0    0    2  2  0 97
   1 1290  43   5   24   43   5   22    0   0    0  297  20    1    3  3  0 94

netstat -i 15를 실행하면 다음과 같은 결과가 나타납니다.

    input   aggr26    output       input  (Total)    output
packets errs  packets errs  colls  packets errs  packets errs  colls
1500233798 0     1489316495 0     0      3608008314 0     3586173708 0     0
10646   0     10234   0     0      26206   0     25382   0     0
11227   0     10670   0     0      28562   0     27448   0     0
10353   0     9998    0     0      29117   0     28418   0     0
11443   0     12003   0     0      30385   0     31494   0     0

swap -l을 실행하면 다음이 제공됩니다.

swapfile             dev  swaplo blocks   free
/dev/swap           4294967295,4294967295     16 4194288 1000656

swap -s를 실행하면 다음이 제공됩니다.

total: 102575560k bytes allocated + 11141528k reserved = 113717088k used, 6692864k available

내가 무엇을 놓치고 있나요?

당신의 도움을 주셔서 대단히 감사합니다!

답변1

추가 조사에 따르면 성능 문제는 주로 두 시스템(Oracle SSXA 및 UCM) 간의 많은 수의 네트워크 호출로 인해 발생하는 것으로 보입니다. 호출은 빠르지만 숫자가 많고 직렬화되어 있어 CPU 사용량이 낮고(주로 I/O를 대기 중) 평균 부하가 높으며(처리 대기 중인 호출이 많음) 특히 응답 시간이 길다(작은 응답 시간의 축적을 통해) ).

이 문제에 대한 통찰력을 가져주셔서 감사합니다!

답변2

나는 솔라리스에 대해 아무것도 모르지만 지난번에 Linux에서 엄청난 CPU 로드를 겪었고 "ps"에서 어떤 프로세스도 CPU를 사용하지 않았습니다. 이는 프로세스의 스레드가 매우 바빴지만 ps가 LWP 사용량을 요약하지 않았기 때문입니다. 상황은 과정이다.

LWP(경량 프로세스, 즉 스레드)의 CPU 사용량을 살펴보아야 합니다.

관련 정보