복붙노트

[REDIS] 포크 메모리를 할당 할 수 없습니다 때문에 레디 스 실패 bgsave

REDIS

포크 메모리를 할당 할 수 없습니다 때문에 레디 스 실패 bgsave

모두: 여기에 무료 -m '내 서버 메모리 정보입니다

              total       used       free     shared    buffers     cached
 Mem:         64433       49259      15174          0          3         31
 -/+ buffers/cache:      49224      15209
 Swap:         8197        184       8012

내 레디 스 서버가 사용되는 46G 메모리가 거의 15G 메모리 무료 남아있다

내 지식으로, 포크 쓰기에 복사 malloc에 ​​필요한 커널 구조에 충분하다 15G 무료 메모리를가있을 때, 그것은 실패하지 않아야합니다.

레디 스 서버는 42G 메모리를 사용하는 경우 외에, bgsave 괜찮와 포크도 OK입니다.

포크 반환 성공을 위해이 모든 VM 매개 변수 I CAN 조정인가?

해결법

  1. ==============================

    1.PROC (5) 매뉴얼 페이지에서 :

    PROC (5) 매뉴얼 페이지에서 :

  2. ==============================

    2.구체적으로는, 레디 스로부터 FAQ

    구체적으로는, 레디 스로부터 FAQ

    OS가이 디스크에 쓰기를 수행 생각하는 레디 스 때문에 예방 적 사전 포크를 실패 할 수 있습니다, 많은 메모리로 필요하지 않습니다.

  3. ==============================

    3./etc/sysctl.conf에 수정 및 추가 :

    /etc/sysctl.conf에 수정 및 추가 :

    vm.overcommit_memory=1
    

    그런 다음 sysctl을을로 다시 시작

    FreeBSD의 경우 :

    sudo /etc/rc.d/sysctl reload
    

    Linux의 경우 :

    sudo sysctl -p /etc/sysctl.conf
    
  4. from https://stackoverflow.com/questions/11752544/redis-bgsave-failed-because-fork-cannot-allocate-memory by cc-by-sa and MIT license