높 고 낮은 nginx 최적화
11227 단어 Nginx
높 은 병발 (High Concurrency) 은 인터넷 분포 식 시스템 구조 디자인 에서 반드시 고려 해 야 할 요소 중 하나 로 디자인 을 통 해 시스템 이 많은 요 구 를 동시에 처리 할 수 있 도록 하 는 것 을 말한다.높 은 병발 과 관련 하여 자주 사용 하 는 일부 지 표 는 응답 시간 (Response Time), 스루풋 (Throughput), 초당 조회 율 QPS (Query Per Second), 병발 사용자 수 등 이 있다.응답 시간: 시스템 이 요청 에 응답 하 는 시간 스루풋: 단위 시간 내 처리 요청 수량.QPS: 초당 응답 요청 수
어떻게 시스템 의 병발 능력 을 향상 시 킵 니까?
인터넷 분포 식 구조 디자인 으로 시스템 의 병행 능력 을 향상 시 키 는 방식 은 주로 두 가지 가 있다. 수직 확장 (Scale Up) 과 수평 확장 (Scale Out) 이다.수직 확장: 단기 처리 능력 향상.수직 확장 방식 은 또 두 가지 가 있다.단기 하드웨어 성능 향상 단기 구조 성능 수준 확장: 서버 증가, 클 러 스 터.
인터넷 업무 의 발전 이 매우 빠 른 초기 에 예산 이 문제 가 아니라면 '단기 하드웨어 성능 강화' 방식 으로 시스템 의 병행 능력 을 향상 시 키 는 것 을 강력 히 건의 했다. 이 단계 에 회사 의 전략 은 업 무 를 발전 시 키 는 데 시간 을 뺏 는 것 이 고 '단기 하드웨어 성능 강화' 는 가장 빠 른 방법 이기 때문이다.단기 하드웨어 의 성능 을 향상 시 키 든 단기 구조의 성능 을 향상 시 키 든 모두 치 명 적 인 부족 이 있다. 단기 성능 은 항상 한계 가 있다.그래서 인터넷 분포 식 구조 디자인 이 높 고 최종 해결 방안 은 수평 확장 이다.수평 확장: 서버 수 를 늘 리 면 시스템 성능 을 선형 으로 확장 할 수 있 습 니 다.
nginx 설정 흐름 제한
세 가지 실현 방식 limitconn_zone limit_req_zone ngx_http_upstream_module 앞의 두 가 지 는 클 라 이언 트 (즉 단일 IP 제한) 에 만 사용 할 수 있 습 니 다.
1.limit_conn_zone
http{
limit_conn_zone $binary_remote_addr zone=one:10m;
server{
...
limit_conn one 10;#
...
}
}
그 중에서 "limit conn one 10" 은 server 층 에 두 면 전체 server 에 유효 할 수도 있 고 location 에 두 면 단독 location 에 만 유효 합 니 다. 이 설정 은 클 라 이언 트 의 병렬 연결 수 는 10 개 밖 에 안 됩 니 다.
2.limit_req_zone
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 (추천)
#
upstream xxx{
server 127.0.0.1:8080 max_conns=10;
server 127.0.0.1:8081 max_conns=10;
}
높 고 낮은 nginx 보안 설정
#
http{
server_tokens off;
}
#IP
# :
location / {
allow 192.168.1.1;
deny all;
}
# :
location / {
deny 192.168.1.1;
allow all;
}
#
location /logs{
autoindex on;
root /opt/nginx/;
}
location ^/logs~*\.(log|txt)$ {
add_header Content-Type text/plain;
root /opt/nginx/;
}
#
HTTPS
nginx 설정 프로 세 스 수, 병발 수, 시스템 최적화
# nginx ,
worker_processes 2; # CPU
events{
worker_connection 65535;
}
#
[root@proxy ~]# ulimit -a #
[root@proxy ~]# ulimit -Hn 100000 #
[root@proxy ~]# ulimit -Sn 100000 #
[root@proxy ~]# vim /etc/security/limits.conf
...
* soft nofile 100000
* hard nofile 100000
# / /
#
[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.136.131/ # ,
nginx 긴 연결
nginx 긴 연결 짧 은 연결, 서버 의 재해 방지 능력 강화
장면: HTTP 1.1 이후 HTTP 프로 토 콜 은 지속 적 인 연결, 즉 긴 연결 을 지원 합 니 다. 한 TCP 연결 에서 여러 개의 HTTP 요청 과 응답 을 전송 할 수 있 고 연결 을 구축 하고 닫 는 소모 와 지연 을 줄 일 수 있다 는 장점 이 있 습 니 다.만약 에 저희 가 nginx 를 역방향 프 록 시 나 부하 균형 으로 사용 하면 클 라 이언 트 에서 온 긴 연결 요청 이 짧 은 연결 로 서버 에 전 송 됩 니 다. 긴 연결 을 지원 하기 위해 서 는 nginx 서버 에 설정 을 해 야 합 니 다.
요구: nginx 를 사용 할 때 긴 연결 을 하려 면 다음 과 같은 두 가 지 를 해 야 합 니 다. 1: client 에서 nginx 까지 는 긴 연결 2: nginx 에서 server 까지 는 긴 연결 입 니 다. 클 라 이언 트 에 있어 nginx 는 사실 server 의 역할 을 합 니 다. 반대로 server 에 있어 nginx 는 client 입 니 다.
설정: 클 라 이언 트 와 Nginx 사이 에 긴 연결 을 유지 하려 면 1: 클 라 이언 트 가 보 낸 요청 은 "keep - alive" header 를 휴대 해 야 합 니 다.2: Nginx 설정 지원 keep - alive
nginx 압축
gzip 압축 작용: 응답 보 를 12098 ℃ 로 보 내기 전에 스토리 보드 압축 기능 을 시작 할 수 있 습 니 다. 이것 은 대역 폭 을 효과적으로 절약 하고 12220 ℃ 에서 클 라 이언 트 의 속 도 를 높 일 수 있 습 니 다. 압축 은 nginx 의 cpu 성능 을 소모 합 니 다.gzip 압축 은 http, server, location 모듈 에서 설정 할 수 있 습 니 다.
nginx 상태 모니터링
# nginx ( :nginx.conf)
# :
# nginx
location /NginxStatus{
stub_status on;
access_log off;
}
# :
./configure --prefix=/opt/nginx/ --with-http_stub_status_module
# nginx
#
http://192.168.1.1/NginxStatus
# :
# active connections
# n , n , n server accepts handled requests
# waiting、reading、writing
reading — Header . , writing ,
writing — Header . , , 。
waiting — keep-alive .
waiting , 。 reading+writing 。
# Nginx :
ps -ef|grep nginx | wc -l
# Web TCP :
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# :
CLOSED #
LISTEN #
SYN_RECV # ,
SYN_SENT # ,
ESTABLISHED # /
FIN_WAIT1 #
FIN_WAIT2 #
ITMED_WAIT #
CLOSING #
TIME_WAIT #
LAST_ACK #
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.