Out of Memory 문제 발생시 원인분석 방법

punk66의 이미지

안녕하세요, 리눅스 기반의 네트워크 장비를 사용하고 잇는데요
최근에 장비에서 Out of memory가 발생하여 장비가 hang상태가 되고 있습니다.

out of memory가 발생하게 되면 우선순위값에 의해 프로세스가 죽게되는데
문제는 어떤 프로세스때문에 이런 문제가 발생되는지 알고싶어서 질문을 올리게 되었습니다.

검색해보니 core덤프파일을 생성해서 분석하면 된다고 들었는데
그 방법 말고 out of memory가 발생하기 직전에 확인할수 잇는 방법은 없을까요?

아마 그방벙이 core덤프를 보는것 같은데....
시스템쪽을 배우는 단계라서 많이 삽질중인데 선배님들의 많은 조언 부탁 드립니다.

감사합니다

-관련로그-

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 0*4kB 3*8kB 4*16kB 0*32kB 1*64kB 0*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB 1*4096kB = 4760kB
DMA32: empty
Normal: 0*4kB 1*8kB 6*16kB 2*32kB 1*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 1*2048kB 15*4096kB = 64360kB
HighMem: empty
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap = 0kB
Total swap = 0kB
Free swap: 0kB
229376 pages of RAM
0 pages of HIGHMEM
2896 reserved pages
201 pages shared
0 pages swap cached
0 pages dirty
0 pages writeback
659 pages mapped
207048 pages slab
73 pages pagetables
Out of Memory: Killed process 28435 (keepalived).

다즐링의 이미지

디버깅보다 모니터링이 급선무인듯합니다.

디스크가 사용가능하면 ps -ef 같은것을 30초 정도마다 저장해두거나 원격으로 보내는 스크립트를 짜서 원인 파악을 하는것이 가능할듯합니다.

------------------------------------------------------------------------------------------------
Life is in 다즐링

------------------------------------------------------------------------------------------------
Life is in 다즐링

ydhoney의 이미지

그러니까 keepalived가 문제인겁니다. (아닐리가 없어요. 그렇죠?)

해당 장비 자체가 임베디드라는 이유로 메모리를 매우 적게 장착했을 수도 있으니 해당 장비업체에 본 내용을 보내보시고, 가능하면 메모리를 확장하시는 방향으로 움직이시거나, keepalived를 튜닝하시는걸 추천합니다..만 keepalived 튜닝 잘 하는 사람이 잘 없어서 고생은 좀 하실 듯하니 그냥 메모리를 늘리시면 될 듯 합니다.

그리고 keepalived의 일부 버전이 메모리 누수인지 가끔 저사양 임베디드 머신에서 저런 증상을 보이는걸 본 기억이 나기는 합니다만 딱히 정확하지는 않으니 참조만 하세요. =ㅅ=)

Undisputed의 이미지

관리자(운영자) 입장에서 core dump 분석은 의미가 없을 수 있습니다.
그보다는 네트워크 장비가 out of memory를 냈다면, 메모리 크기 보다는
접속된 세션수나, 패킷수를 먼저 확인해 보셔야 할꺼 같습니다.

특정 스위치나 장비의 잘못된 라우팅이 문제일 수도 있고,
내/외부의 악의적인 공격 트래픽이 문제일 수도 있을 테구요.

세션수나 패킷수는
상위 네트워크 장비(스위치나, 방화벽등)가 있으시면 쉽게 확인되실 껍니다.

그런후, 별 문제가 없는것 같다고 판단되시면, 장비업체에 연락하셔서
장비 자체의 버그나, upgrade 가능여부 등을 확인해보는 순서로 진행 하시면 될꺼 같으세요.

^_^의 이미지

프로세스 전체를 모니터링 하시는 것이 좋을 것 같습니다.

다른것의 영향으로 프로세스를 죽여 버리기도 하니깐요 ^^

----------------------------------------------------------------------
웃는 얼굴 헤죽 헤죽

----------------------------------------------------------------------
웃는 얼굴 헤죽 헤죽

익명 사용자의 이미지

rr

glay의 이미지

어떤 네트웍 장비 인지 모르지만 keepalived 를 사용하는가보군요;; ( GPL 인데;; )


--------------- 절취선 ------------------------
하늘은 스스로 삽질하는 자를 삽으로 팬다.

http://glay.pe.kr

익명 사용자의 이미지

OOM(out of memory) killer가 작동을 한것 같은데요

익명 사용자의 이미지

매우 새로운 사실이네요

익명 사용자의 이미지

머지 이건 ㅡㅡ

익명 사용자의 이미지

이런댓글에 대체 머지? ㅡㅡ;;