|
|
제가 T5-2 memory 128G인 서버에 DB(SGA=50G PGA=커넥션수에 따라 가변적)를 운영중인데요
갑자기 DB커넥션 수가 많아지면 DB가 접근이 불가능 해지고
OS에서 메모리 사용이 심각하게 급등을 합니다.
아래는 정상일때 값입니다.
prstat 값
7219 oracle 49G 49G sleep 59 0 0:00:01 0.0% oracle/1
25618 oracle 49G 49G sleep 59 0 0:02:33 0.0% oracle/1
16919 oracle 49G 49G sleep 59 0 0:08:14 0.0% oracle/27
16476 oracle 49G 49G sleep 59 0 0:00:19 0.0% oracle/1
2129 oracle 49G 49G sleep 59 0 0:01:25 0.0% oracle/1
14657 oracle 49G 49G sleep 59 0 0:00:17 0.0% oracle/1
576 root 2512K 1264K sleep 59 0 0:00:00 0.0% smcboot/1
661 root 4464K 3000K sleep 59 0 0:00:00 0.0% snmpXdmid/2
573 root 2512K 1720K sleep 59 0 0:00:00 0.0% smcboot/1
NPROC USERNAME SWAP RSS MEMORY TIME CPU
1165 oracle 104G 75G 59% 7:16:21 0.3%
61 root 183M 242M 0.2% 0:33:59 0.0%
1 smmsp 2704K 9728K 0.0% 0:00:00 0.0%
1 noaccess 144M 124M 0.1% 0:00:50 0.0%
4 daemon 5816K 8288K 0.0% 0:00:00 0.0%
vmstat 값
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s3 s4 sd sd in sy cs us sy id
0 0 0 19067376 42651368 854 1001 3251 11 11 0 4 -0 9 3 27 5226 52895 6055 1 0 99
1 0 0 17282312 46236528 7 22 0 0 0 0 0 0 0 0 4 1210 12440 7479 0 0 100
0 0 0 17281672 46235944 0 12 0 0 0 0 0 0 0 0 0 1303 32623 20876 0 0 100
1 0 0 17281056 46233944 582 492 0 0 0 0 0 0 0 0 0 1521 25807 12314 0 0 100
1 0 0 17280992 46233840 8 26 0 0 0 0 0 0 0 0 19 2540 3160 2418 1 0 99
0 0 0 17280736 46234152 0 3 0 0 0 0 0 0 0 0 0 1945 2732 1390 1 0 99
0 0 0 17280736 46234144 4 13 0 0 0 0 0 0 0 0 1 4106 10956 3534 0 0 99
1 0 0 17284920 46243880 3 35 0 24 24 0 0 0 1 0 3 1643 7229 1294 0 0 100
0 0 0 17284920 46243880 0 0 0 0 0 0 0 0 0 0 0 1203 2875 850 0 0 100
0 0 0 17279544 46238528 5 87 0 0 0 0 0 0 1 0 5 2270 15955 2042 1 0 99
swap -l 값
swapfile dev swaplo blocks free
/dev/dsk/c1t3679FB217677E193d0s1 32,33 16 33554544 33554544
swap -s 값
total: 79115000k bytes allocated + 29941528k reserved = 109056528k used, 17300264k available
system 값
set noexec_user_stack=1
set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=1024
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=32767
set shmsys:shminfo_shmmax=137438953472
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=256
set shmsys:shminfo_shmseg=10
set noexec_user_stack=1
set noexec_user_stack_log=1
set disable_ism_large_pages=0x74
project 값
system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
user.oracle:100::oracle::
sar -r 값
SunOS 5.10 Generic_150400-20 sun4v 02/07/2017
10:08:21 freemem freeswap
10:08:22 5773046 34480112
이렇게 OS에서 결과 값을 얻었습니다.
왜 메모리는 널널한데 swap을 사용중일까요?
스왑을 썻다고 생각하게된 부분은
prstat 에서 swap(104G) - RSS(75) = swap 사용 값이라고 알고 있습니다
또한
vmstat 에서 페이징이 일어났나고 나와서 입니다.
그리고 DB에 커넥션이 많이 일어나면
oracleDB가 갑자기 swap을 사용을 합니다.
아래는 커넥션이 많아 접근조차 불가능하기 전의 명령어 결과값입니다.
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
2292 oracle 49G 49G sleep 34 0 0:10:26 0.3% oracle/11
13561 oracle 49G 49G cpu27 19 0 0:00:02 0.1% oracle/1
11521 oracle 49G 49G sleep 59 0 0:00:33 0.1% oracle/11
13641 root 5752K 5464K cpu37 0 0 0:00:00 0.1% prstat/1
11543 oracle 49G 49G sleep 59 0 0:00:29 0.1% oracle/1
3297 oracle 49G 49G cpu12 1 0 0:00:07 0.1% oracle/1
11973 oracle 49G 49G sleep 59 0 0:00:43 0.1% oracle/11
11525 oracle 49G 49G sleep 59 0 0:00:37 0.1% oracle/11
5259 oracle 49G 49G sleep 59 0 0:00:05 0.1% oracle/1
4513 oracle 49G 49G sleep 59 0 0:00:04 0.1% oracle/1
3881 oracle 49G 49G sleep 50 0 0:00:05 0.1% oracle/1
5027 oracle 49G 49G sleep 59 0 0:00:04 0.1% oracle/1
4144 oracle 49G 49G sleep 59 0 0:00:09 0.1% oracle/1
5233 oracle 49G 49G sleep 59 0 0:00:01 0.0% oracle/1
9563 oracle 49G 49G sleep 59 0 0:01:44 0.0% oracle/11
NPROC USERNAME SWAP RSS MEMORY TIME CPU
1603 oracle 120G 83G 65% 2:03:02 2.4%
62 root 171M 191M 0.1% 0:02:17 0.1%
1 smmsp 2704K 9584K 0.0% 0:00:00 0.0%
1 noaccess 152M 136M 0.1% 0:00:12 0.0%
4 daemon 5816K 8280K 0.0% 0:00:00 0.0%
Total: 1671 processes, 2697 lwps, load averages: 2.88, 3.07, 2.84
genunix: [ID 470503 kern.warning] WARNING: Sorry, no swap space to grow stack for pid 25320 (oracle)
genunix: [ID 470503 kern.warning] WARNING: Sorry, no swap space to grow stack for pid 25331 (oracle)
위 메세지 지속적으로 발생 PID가 바뀌면서 엄청나게 많은 양의 로그를 출력합니다.
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s3 s4 sd sd in sy cs us sy id
0 0 0 41339600 57938816 33 539 574 0 0 0 0 0 0 0 41 5427 167929 5183 4 0 95
1 0 0 41309104 57909720 404 1226 0 0 0 0 0 0 0 0 7 3604 260360 3427 5 1 95
0 0 0 41307000 57905632 88 455 48 0 0 0 0 0 0 0 31 5630 317371 5130 7 1 93
3 0 0 41304968 57903328 3 223 247 0 0 0 0 0 0 0 15 3140 182794 2687 5 0 95
1 1 0 41297832 57896592 100 192 2230 0 0 0 0 0 0 0 37 3969 322440 3467 6 0 94
1 0 0 41324368 57946456 156 780 207 0 0 0 0 0 0 0 20 4405 162226 4043 3 0 97
swap 1.2G 5.1M 1.2G 1% /tmp
swap -l 은 800M까지 내려 갔습니다.
제가 보기에는 피지컬 메모리를 증설한다고 하더라도 똑같은 현상이 발생될 것 같다고 판단되는데요
이런 경험있으셨던 분이나 왜 그런지 이유를 아시는분 답변 부탁드립니다. ㅠㅠ
|
|

첫댓글 그리고 왜 swap이 free 보다 낮을까요 솔라리스 메모리구조가 (스왑파티션+피지컬메모리)* 0.9 가 가상 메모리고 거기서 피지컬 메모리 자원쓰다가 모자라면 스왑공간 쓰는것으로 알고있는데요 제가 아는게 틀린것인가요?
올라가자님 해결되셨는지요?
메모리 증설로 해결은 했는데 이해가 되지 않네요.
@올라가자 아마도 또 올라갑니다..