nginx + uwsgi 성능 개선

1908 단어
운영 경험 이 부족 하기 때문에 서버 배치 후 여러 가지 문제 에 부 딪 혔 습 니 다. 잠시 '두통 치료 머리 발 통 증 치료' 밖 에 할 수 없습니다. 가끔 은 작은 매개 변수 가 자신 을 곤경 에 빠 뜨 렸 습 니 다. 기록 하여 나중에 사용 할 수 있 습 니 다 (현재 nginx 버 전 1.4.6).
  • Linux 기본 매개 변수의 최적화
  • sysctl net. core. somaxconn = 1024 \ # 이 매개 변 수 는 기본적으로 128 이 며, uwsgi 의 감청 대기 열 을 변경 하지 않 으 면 이 값 보다 클 수 없습니다
  • swap 공간 에서 아 리 클 라 우 드 미 러 를 사용 하 는 것 은 기본적으로 swap 파 티 션 이 열 리 지 않 았 습 니 다. 가끔 피크 가 되면 out of memory 의 오류 가 발생 합 니 다. swap 파 티 션 을 추가 하면 이 상황 을 효과적으로 피 할 수 있 고 swap 파 티 션 의 사용 전 제 를 설정 할 수 있 습 니 다
  • sysctl vm.swappiness=10 #      10%           
    

    인터넷 상에 서 보편적으로 가상 공간 을 개척 하 는 방법
    dd if=/dev/zero of=swapfile bs=1024 count=400000 
    

    네트워크 로그 에서 볼 수 있 습 니 다. 이렇게 속도 가 위의 방식 보다 훨씬 빠 릅 니 다.
    fallocate -l 4G /swapfile
    
  • uwsgi 협 정 지원 은 잦 은 IO 가 있 는 상황 에서 uwsgi 의 성능 이 할인 되 고 threads 매개 변 수 는 병발 을 증가 시 킬 수 있 으 나 성능 비용 이 많이 들 며 gevent 를 사용 하면 코드 를 수정 하지 않 은 상태 에서 병발 을 크게 강화 할 수 있다.높 은 곳 에서 추천 사용
  • uwsgi --http :8001 --module ugtest.wsgi --gevent 40 --gevent-monkey-patch
    

    스 레 드 예제 를 사용 하면 병발 이 높 지 않 으 면 사용 할 수 있 고 높 은 병발 은 적용 되 지 않 습 니 다.
    uwsgi --http :8001 --module ugtest.wsgi --enable-threads --threads 40
    
  • nginx 접근 제 어 는 서버 가 강하 지 않 기 때문에 러시아워 에 악의 적 인 접근 을 당 했 을 때 listen 대기 열 이 채 워 지고 정상 적 인 사용자 가 접근 할 수 없습니다. nginx. conf 에 추가
  • limit_req_status 599; #         ,        
        limit_req_zone $binary_remote_addr zone=allips:2m rate=100r/s; #nginx     100   
        geo $limited { #       IP
            default 1;
            182.92.117.23 0;
        }
    

    응용 config 에 location / 세그먼트 를 추가 하면 개인 적 으로 이 부분 은 uwsgi 의 listen 과 하 는 일이 많 지 않 고 nginx 층 에서 하 는 효율 이 uwsgi 층 보다 높 을 것 이 라 고 생각 합 니 다.
    location / {
            ...
            limit_req zone=allips burst=60 nodelay; #     ,        
    }
    

    좋은 웹페이지 즐겨찾기