2012-07-04 3 views
0

내 nginx에는 8 개의 프로세스가 있으며 각각은 150M 메모리를 사용합니다.Nginx가 "Out of memory"로 사망 했습니까?

때때로, 내 nginx를이 (dmesg 명령)에 대한 살해

21,228 총 페이지 캐시 페이지 스왑 캐시 스왑 캐시 통계 50 페이지 : 가, 35 삭제, 85 추가 63/64 무료 스왑을 찾을 수 프로세스 16373 (의 nginx를) 죽일 5,013 점수 또는 아이

= 2031300kB 총 스왑 = 2031608kB 3407856 페이지는 3180034 페이지 36,448 페이지 491788 메모리가 부족

비 공유 페이지를 공유 예약 290,515 페이지를 Highmem라는 RAM 내가 할

  1. :

나는 여기

내 질문은 ... 메모리 부족이 소모되므로 움 킬러가 일을 시작 밝혀, 그것을 봤 16GB 메모리이지만 낮은 메모리는 단지 800M (무료 -lm)입니다. 나머지는 어떻게 사용할 수 있습니까?

  • 가의 nginx 프로세스를 사용 150메가바이트 메모리에 대한 너무 많은가요 ... 구글은 내가 패치 커널에서 hugemem을 사용할 수 있습니다 말해,하지만 단지 centos4를 들어, 광산 centos5.2, 그래서? 너희들은 그런 문제를 결코 만나지 못 하느냐?

  • 낮은 메모리 혼란 32 비트 시스템은 PAE없이 3GB 이상의 메모리를 사용할 수 있습니다. 왜 Low/Hign 메모리가 적합합니까? 커널 버그가 아닙니까?

  • +0

    사용중인 운영 체제는 무엇입니까? 메모리 관리는 FreeBSD와 Linux간에 매우 다릅니다. 다른 BSD 변형 (FreeBSD/NetBSD/OpenBSD)조차도 당신이 무슨 일이 일어나고 있는지 모르는 경우 별난 일이 될 수있는 몇 가지 중요한 차이점이 있습니다. – ghoti

    +0

    광산은 Centos 5입니다.2, 32-bit – ZIFF

    +0

    nginx 설정을 첨부하고 free -m 출력을 첨부하십시오. –

    답변

    0

    OOM 킬러가 활성화되지 못하도록해야하는 무료 스왑이 많이 있음을 확인했지만 어떤 이유로는 그렇지 않습니다. This question from serverfault는 사용되지 않은 스왑이있는 OOM이 많은 메모리를 원했던 드라이버로 인해 실패한 할당이 커널 모드에 있음을 나타냅니다. 이는 또한 무료 HighMem이 요청을 만족시키기에 충분하지 않은 이유를 설명 할 수 있습니다 (커널 모드가 특정 지역의 메모리를 요청할 수 있음). 역 추적 (backtrace)과 같은 단서가 있는지보기 위해 dmesg에서 좀 더 멀리보아야합니다.

    질문의 세 번째 부분은 가상 주소 공간이 여전히 32 비트 인 동안 물리적 주소 공간을 36 비트로 확장하기 때문에 PAE를 사용할 때 HighMen과 LowMem을 구별합니다. 잠재적 인 64G의 물리적 주소에 대한 액세스는 고정 된 4G 하위 세트에 대한 액세스만큼 빠르게 수행 될 수 없기 때문에 커널은 메모리를 분할하고 "낮은"영역에서 성능이 가장 중요한 사항을 유지하려고 시도합니다.

    +0

    Thx, "저급"영역 **에서 가장 성능이 중요한 항목을 유지하는 것에 동의합니다. 이 : – ZIFF

    +0

    총 사용량은 무료입니다. Mem : 12177 1737 10439 낮음 : 780 263 516 낮은 영역은 약 4 * 1024MB가되어서는 안됩니까? – ZIFF