nginx 흐름 제한 방안 의 실현 (세 가지 방식)
1、limit_conn_zone
2、limit_req_zone
3、ngx_http_upstream_module
앞의 두 가 지 는 클 라 이언 트 (즉 단일 ip 제한) 에 만 있 을 수 있 고 문서 도 완전 하지만 테스트 를 통 해 공식 문서 가 말 한 결과 에 이 르 지 못 한 것 으로 나 타 났 다 (동생 의 테스트 방법 에 문제 가 있 을 수 있 음).
여기 서 먼저 앞의 두 가 지 를 간단하게 소개 합 니 다.
1、limit_conn_zone
1.1nginx 설정
http{
limit_conn_zone $binary_remote_addr zone=one:10m;
server
{
......
limit_conn one 10;
......
}
}
그 중에서 'limit conn one 10' 은 server 층 에 두 면 전체 server 에 효과 가 있 을 뿐만 아니 라 location 에 두 면 단독 location 에 만 효과 가 있 습 니 다.이 설정 은 클 라 이언 트 의 병렬 연결 수 는 10 개 에 불과 하 다 는 것 을 나타 낸다.
1.2 결과
ab 20 nginx,
Complete requests: 20
Failed requests: 9
(nginx 설정 의 ip 병렬 연결 수가 10 이 고 결과 의 성공 수가 + 1 인 이 유 는 알 수 없습니다. nginx 로그 에서 도 9 개의 요청 이 503 으로 돌아 가 는 것 을 볼 수 있 습 니 다)
2、limit_req_zone 2.1 nginx 설정
http{
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
server
{
......
limit_req zone=req_one burst=120;
......
}
}
그 중에서 'limit req zone = req one burst = 120' 은 server 층 에 두 면 전체 server 에 효과 가 있 을 뿐만 아니 라 location 에 두 면 단독 location 에 만 효과 가 있 습 니 다.
rate = 1r / s 는 주소 당 1 초 에 한 번 만 요청 할 수 있다 는 뜻 이다. 즉, 영패 통 burst = 120 에는 모두 120 개의 영패 가 있 고 매 초 에 1 개의 영패 만 추가 되 며 120 개의 영패 가 발급 되면 더 나 온 요청 은 503 으로 돌아간다.
3、ngx_http_upstream_module 3.1 소개
우수한 부하 균형 모듈 로 서 현재 내 가 일 하 는 데 가장 많이 사용 되 고 있다.사실 이 모듈 은 우리 가 필요 로 하 는 백 엔 드 제한 기능 을 제공 합 니 다.공식 문 서 를 통 해 이 모듈 에는 max 라 는 인자 가 있 습 니 다.conns 는 서버 의 흐름 을 제한 할 수 있 지만 아 쉽게 도 상업 판 nginx 에서 만 사용 할 수 있 습 니 다.그러나 nginx 1.11.5 버 전 이후 정 부 는 이 매개 변 수 를 상업 판 에서 벗 어 났 다. 즉, 우리 가 생산 에 광범 위 하 게 사용 되 는 nginx 1.9.12 버 전과 1.10 버 전 을 업그레이드 하면 사용 할 수 있다 (테스트 를 통 해 알 수 있 듯 이 이전 버 전의 nginx 에서 이 매개 변 수 를 더 하면 nginx 서 비 스 는 시작 할 수 없다).3.2 설정
upstream xxxx{
server 127.0.0.1:8080 max_conns=10;
server 127.0.0.1:8081 max_conns=10;
}
3.3 결과 (캡 처 불편)
두 대의 기계 로 각각 ab 도구 로 nginx 에 20, 30, 40 개의 동시 다발 요청 을 보 냅 니 다.
동시 다발 에 관 계 없 이 성공 에 대한 요 구 는 12 개 에 불과 하 다 는 것 을 알 수 있다. 성공 횟수 는 2 개 로 늘 어 나 는 동시에 1.2 의 테스트 결과 에서 성공 횟수 도 + 1 이다. 여 기 는 두 대의 기계 이다. 이런 고려 를 바탕 으로 기 계 를 세 대 로 늘 렸 는데 과연 성공 횟수 는 13 개 였 다.여기 서 가상 을 얻 을 수 있 습 니 다. 성공 적 인 요청 수 는 클 라 이언 트 의 + 1 에 따라 + 1 (여 기 는 가설 일 뿐 입 니 다)
주: 그리고 중요 한 몇 가지 가 있 습 니 다.max_conns 는 upstream 의 단일 서버 를 대상 으로 하 는 것 이지 모든 것 이 아 닙 니 다.nginx 에 인자 가 있 습 니 다: workerprocesses,max_conns 는 모든 worker프로 세 스 의
ab 도구 설치 절차 첨부 (전재, 출처 알 수 없 음)
#ab apr-util , :
yum install apr-util
# yum-utils yumdownload , yumdownload
yum install yum-utils
cd /opt
mkdir abtmp
cd abtmp
yum install yum-utils.noarch
yumdownloader httpd-tools*
rpm2cpio httpd-*.rpm | cpio -idmv
# usr ab usr
#
./ab -c 100 -n 10000 http://127.0.0.1/index.html
#-c 100 : 100
#-n 10000 : 10000
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.