[uWSGI] listen queue of socket (fd: 3) 오류 분석

현재 django 의 응용 은 기본적으로 uWSGI 를 사용 하여 배치 되 고 있 습 니 다. 아래 listen queue of socket "127.0.0.1:9001" (fd: 3) 와 같은 오류 가 두 번 발생 한 적 이 있 습 니 다. 다음은 두 번 의 오류 가 발생 한 해결 과정 을 말씀 드 리 겠 습 니 다.
오류 장면
  • centos 6.6
  • uWSGI2.0
  • nginx1.6

  • 오류 로그 캡 처
    Tue Jun  2 17:33:27 2015 - *** uWSGI listen queue of socket "127.0.0.1:9001" (fd: 3) full !!! (101/100) ***
    Tue Jun  2 17:33:28 2015 - *** uWSGI listen queue of socket "127.0.0.1:9001" (fd: 3) full !!! (101/100) ***
  • 첫 번 째 는 연결 기관실 방화벽 설정 이 잘못 되 어 서버 output 를 제한 한 것 이다. 즉, 외부 에서 서버 에 보 내 는 데 문제 가 없 지만 서버 가 외부 로 돌아 갈 때 매우 느 려 서 거의 사용 할 수 없다. 이때 uwsgi 로그 에 대량의 오류 가 발생 했다
  • .
  • 두 번 째 는 병발 량 이 급증 한 후 활동 링크 가 6000 대 를 유지 할 때 이 오류 가 대량으로 발생 했다.

  • 분석 하 다.
    이 오 류 를 바탕 으로 관련 자 료 를 조 회 했 습 니 다. 시스템 등급 매개 변수 문제 일 것 입 니 다. 구체 적 으로 Liux man page listen (2) 을 참고 할 수 있 습 니 다.
    lzz 주: 간단 한 이 해 는 모든 감청 의 socket 입 니 다. accept 가 없 기 전에 처 리 를 기다 리 는 socket 대기 열 길 이 는 Liux (적어도 centos 6.6 에서) 기본 값 은 128 입 니 다. 제 가 컴 파일 한 uwsgi 에서 기본 값 은 100 입 니 다. 즉, 시스템 매개 변 수 를 조정 하지 않 기 전에 가장 높 은 것 은 128 입 니 다.
    그러면 어떻게 해야만 대열 의 길 이 를 길 게 조절 할 수 있 습 니까? *시스템 매개 변 수 를 조정 하여 유효 하 게 해 야 합 니 다 * uwsgi 설정 을 조정 한 다음 응용 을 다시 시작 해 야 합 니 다.
    조작 하 다.
    시스템 매개 변수 수정
    설정 파일 을 직접 수정 하 였 습 니 다. 재 부팅 후에 도 유효 합 니 다.
    / etc / sysctl. conf 파일 을 수정 하고 이 매개 변수 값 을 추가 하거나 수정 합 니 다.
    #                web      ,    128    
    net.core.somaxconn = 262144#  SYN     ,   1024,       8192,                
    net.ipv4.tcp_max_syn_backlog = 8192
    #              
    net.core.netdev_max_backlog = 65536

    수정 이 끝 난 후 sysctl -p 인 자 를 다시 불 러 오 는 것 을 기억 하 세 요.
    조정
    설정 이 든 명령 행 이 든 옵션 을 추가 합 니 다. 예 를 들 어. ini 파일 에 다음 설정 을 추가 합 니 다.
    listen=1024

    이후 응용 프로그램 을 다시 시작 하고 설정 을 다시 불 러 옵 니 다.
    작은 매듭
    설정 수정 을 통 해 이러한 오 류 는 거의 발생 하지 않 았 고 시스템 의 스루풋 과 병발 수 는 모두 크게 향상 되 었 다.그래서 시스템 특성 과 개선 은 전체 서비스의 질 을 향상 시 키 는 데 매우 중요 하 다.
    레 퍼 런 스
  • somaxconn - That pesky limit.
  • listen(2) - Linux man page
  • 좋은 웹페이지 즐겨찾기