Nginx 오류 집계

5735 단어
서버 에서 흔히 볼 수 있 는 Nginx 오류 집합
1.nginx:no live upstreams while connecting to upstream
no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

    fail_timeout = 15s 는 사실 지난번 요청 에서 서비스 가 정상적으로 돌아 오지 못 하 는 것 을 발견 하면 15s 의 시간 이 있 으 면 이 server 를 사용 할 수 없 지만 15s 가 넘 으 면 이 server 에 다시 전 송 됩 니 다. 이 server 가 진정 으로 회복 되 었 든 안 되 었 든 간 에.
 upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

 
    nginx plus 를 사용 해 봤 다 면 nginx plus 가 제공 하 는 helhcheck 메커니즘 이 더욱 강력 합 니 다. 몇 가지 키 워드 를 말 하 세 요. 직접 찾 아 보 세 요!zone slow_start health_check match ! 이 slowstart 는 캐 시 예열 문 제 를 잘 해 결 했 습 니 다. 예 를 들 어 nginx 는 기계 가 다시 시작 되 는 것 을 발견 하면 slow 를 기다 릴 것 입 니 다.starts 가 설정 한 시간 에 야 이 서버 에 요청 을 다시 보 낼 수 있 습 니 다. 캐 시 예열 에 시간 을 제공 합 니 다.
 
 
2.nginx:connect() failed (110:connection timed out )while connecting to upstream
 
[error] upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: howtounix.info, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080", host: "howtounix.info", referrer: "requested_url"

    nginx 설정 은 다음 과 같 습 니 다: 
    
worker_processes 4;
pid /run/nginx.pid;
worker_rlimit_nofile 16384;

events {
      worker_connections 10000;
      # multi_accept on;
}

server {
    listen       80;
    server_name  howtounix.info;
 
    location / {
        ...
        proxy_read_timeout 60;
        ...
    }
    ...
}

    이런 문제 가 발생 한 것 은 웹 서비스 가 60 내 에 해당 되 지 않 아 시간 을 초과 했다 는 것 을 의미한다.120 으로 수정 하면 Nginx 대기 시간 은 120 초 이 고 기본 값 은 60 초 입 니 다.
 
    서버 파일 수 설정:
 
#########
 ulimit -a  
core file size              (blocks, -c) 0  
data seg size               (kbytes, -d) unlimited  
scheduling priority                 (-e) 0  
file size               (blocks, -f) unlimited  
pending signals                 (-i) 32063  
max locked memory       (kbytes, -l) 64  
max memory size         (kbytes, -m) unlimited  
open files                      (-n) 65536  
pipe size            (512 bytes, -p) 8  
POSIX message queues     (bytes, -q) 819200  
real-time priority              (-r) 0   
stack size              (kbytes, -s) 8192  
cpu time               (seconds, -t) unlimited  
max user processes              (-u) 32063  
virtual memory          (kbytes, -v) unlimited  
file locks                      (-x) unlimited  

   
 
    Tomcat 관련 설정
maxThreads="500" minSpareThreads="150" acceptCount="250" acceptorThreadCount="2"

 
    최적화 방안:
     1. tcp 조정fin_timeout 
       2. 포트 범위 조정
       3. Nginx 서버 데 이 터 량 을 늘 리 고 한 대의 Nginx 서버 수용 요청 수 를 줄 입 니 다.
 
    현재 인터페이스 범위 보기     
$ sysctl net.ipv4.ip_local_port_range

    출력 결 과 는 다음 과 같다.    
net.ipv4.ip_local_port_range = 32768    61000

    새 포트 범위 설정   
# echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range

    또는 다음 과 같은 방식 으로  
$ sudo sysctl -w net.ipv4.ip_local_port_range="1024 64000"

    수정 결 과 를 영구적 으로 적용 하기 위해 파일 편집 /etc/sysctl.conf  을 파일 끝 에 추가 합 니 다.
# increase system IP port limits
net.ipv4.ip_local_port_range = 1024 65535

   연결 상태 보기
    netstat | grep 'TIME_WAIT' |wc -l
많은 시간 이 나타 나 면Wait 걱정 하지 마 세 요. 문 제 는 짧 은 연결 이 많이 존재 하 므 로 짧 은 시간 내 에 사용 한 후 빠르게 닫 는 것 입 니 다.   
cat /proc/sys/net/ipv4/tcp_fin_timeout

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

  /etc/sysctl.conf      
net.ipv4.tcp_fin_timeout=30
        RPC    NFS     
/etc/init.d/nfsd stop
chkconfig nfsd off

좋은 웹페이지 즐겨찾기