nginx 를 이용 하여 웹 접근 가속 화

원인
     최근 에 새로운 시스템 의 디자인 에서 첫 페이지 의 오픈 속도 에 대해 고려 를 했 습 니 다. 페이지 에 동적 데 이 터 를 위주 로 하기 때문에 간단 한 정적 데이터 가 안 될 수 있 기 때문에 업무 와 기술 결합 측면 에서 이 문 제 를 고려 해 야 합 니 다.일부 데 이 터 는 민감 하지 않 기 때문에 캐 시 에 넣 고 정기 적 으로 업데이트 할 수 있 습 니 다.또 어떤 것 은 그 자체 가 정적 이 므 로 병발 속 도 를 가속 화 할 수 있 을 까 하 는 것 이다.
    여기 서 동적 데이터 에 대해 두 가지 방법 이 생각 났 습 니 다. 1) Action 을 하나의 예 로 설정 하고 요청 한 결 과 를 캐 시 에 직접 추가 한 다음 에 정시 스 레 드 로 이 캐 시 를 새로 고 칩 니 다.2) 출력 결과 페이지 를 정적 으로 만 들 고 결과 페이지 를 정기 적 으로 업데이트 합 니 다.    전 자 는 제어 가 매우 유연 하고 더 블 버퍼 를 이용 해도 버퍼 의 속도 가 떨 어 지 는 것 을 느끼 지 못 하 게 하 며, 단점 은 비교적 많은 코드 를 바 꾸 는 것 이다.후 자 는 정반 대로 정적 화 는 외층 의 프레임 워 크 설정 에 의존 해 야 하 며 코드 는 전혀 바 꾸 지 않 아 도 된다.
 
선형
    현재 유행 하 는 역방향 프 록 시 서버 는 squid 와 nginx 가 있 습 니 다. 자 료 를 찾 아 보 니 nginx 는 역방향 프 록 시 와 부하 균형 을 잘 하 는 반면 squid 는 자신의 캐 시 체제 에 강하 고 lightd 는 이미지 서버 를 많이 사용 하 는 것 같 습 니 다.nginx 의 프로필 이 간단 한 것 같 아서 이 걸 로 먼저 시도 해 보기 로 했 습 니 다.
 
성능 테스트
    설치 가 완료 되면 당연히 성능 테스트 를 먼저 해 야 하 는데, 이번에 도 ab 를 사용 하여 압력 테스트 를 한다.비 교 를 위해 tomcat 를 시 작 했 습 니 다. nginx 는 역방향 에이전트 로 설정 되 었 습 니 다.나 는 이 기 계 를 방문 하 였 으 나, 테스트 결 과 는 나 를 놀 라 게 했다.
    테스트 명령: ab - n 10000 - k - c 1000http://localhost:8080/pscms_hlj_web/p_w_picpaths/logo.jpg
tomcat:
Server Software:        Apache-Coyote/1.1 
  • Server Hostname:        localhost 

  • Server Port:            8080 
  •  

  • Document Path:          /pscms_hlj_web/p_w_picpaths/logo.jpg 
  • Document Length:        17619 bytes 

  •  
  • Concurrency Level:      1000 

  • Time taken for tests:   3.671 seconds 
  • Complete requests:      4254 

  • Failed requests:        0 
  • Write errors:           0 

  • Keep-Alive requests:    4254 
  • Total transferred:      76035996 bytes 

  • HTML transferred:       74951226 bytes 
  • Requests per second:    1158.92 [#/sec] (mean) 

  • Time per request:       862.874 [ms] (mean) 
  • Time per request:       0.863 [ms] (mean, across all concurrent requests) 

  • Transfer rate:          20228.99 [Kbytes/sec] received 
  •  

  • Connection Times (ms) 
  •               min  mean[+/-sd] median   max 

  • Connect:        0   33  67.4      0     261 
  • Processing:    52  255  60.1    272     315 

  • Waiting:       15  129  61.7    127     261 
  • Total:         52  288 108.0    272     559 

  • nginx:
    Server Software:        nginx/0.7.67 
  • Server Hostname:        localhost 

  • Server Port:            8000 
  •  

  • Document Path:          /pscms_hlj_web/p_w_picpaths/logo.jpg 
  • Document Length:        17619 bytes 

  •  
  • Concurrency Level:      1000 

  • Time taken for tests:   0.597 seconds 
  • Complete requests:      10000 

  • Failed requests:        0 
  • Write errors:           0 

  • Keep-Alive requests:    10000 
  • Total transferred:      179370000 bytes 

  • HTML transferred:       176190000 bytes 
  • Requests per second:    16744.67 [#/sec] (mean) 

  • Time per request:       59.721 [ms] (mean) 
  • Time per request:       0.060 [ms] (mean, across all concurrent requests) 

  • Transfer rate:          293309.69 [Kbytes/sec] received 
  •  

  • Connection Times (ms) 
  •               min  mean[+/-sd] median   max 

  • Connect:        0    2   8.1      0      44 
  • Processing:     0   49  19.7     48      97 

  • Waiting:        0   44  19.8     42      93 
  • Total:          0   51  19.4     52      99 

  •     nginx 의 성능 이 훨씬 좋 습 니 다. 이것 은 이 페이지 가 캐 시 되 는 원인 일 것 입 니 다. 또한 epoll 을 지원 하 는 것 도 높 은 IO 성능 이 향상 되 었 을 것 입 니 다.그러나 이 테스트 에서 도 tomcat 가 안정 적 으로 끊 어 진 것 을 발 견 했 습 니 다. nginx 의 높 은 병행 지원 은 정말 뚜껑 이 아 닙 니 다.
     
    결론
        실제 시스템 에 서 는 그렇게 많은 정적 인 내용 이 있 을 수 없습니다. 브 라 우 저 로 컬 에 도 캐 시 가 있 지만 nginx 는 동시 응답 능력 을 어느 정도 향상 시 킬 수 있 습 니 다.잦 은 업데이트 가 필요 없 는 동적 콘 텐 츠 에 대해 서도 정시 캐 시 를 할 수 있 고 페이지 의 열 림 속 도 를 크게 가속 화하 고 백 엔 드 의 압력 을 낮 출 수 있다.온라인 시스템 은 그림, js, css, 정적 html 를 모두 캐 시 할 수 있 으 며, 백 엔 드 는 동적 내용 의 요청 만 받 아들 여 웹 접근 속 도 를 높 일 수 있 습 니 다.
     
    기타 발견
        사실 nginx 는 캐 시 내용 을 hash 를 거 쳐 파일 에 넣 었 습 니 다. 테스트 에서 보면 메모리 에서 가 져 온 결과 가 분명 하지만 한 번 은 기록 되 었 을 것 입 니 다.나중에 Liux 아래 에 자체 파일 시스템 이 있 는 것 을 알 게 되 었 습 니 다. / dev / shm 아래 에 기본적으로 메모리 크기 의 절반 입 니 다.이렇게 하면 정말 캐 시 내용 을 이 파일 안에 가리 키 면 됩 니 다.
        또한 nginx 도 쌍 기 열 준비 와 부하 균형 을 편리 하 게 실현 할 수 있다.부하 균형 은 weight 를 설정 하여 접근 비율 을 조정 할 수 있 으 며, 시스템 은 자동 으로 요청 을 바 꿀 수 있 습 니 다.듀 플 렉 스 열 비 는 모든 노드 가 사용 할 수 없 을 때 자동 으로 방향 을 바 꾸 는데 이것 은 시스템 업그레이드 시 서 비 스 를 중단 하지 않 을 수 있다.이 설정 들 은 다음 과 같은 설정 을 하면 됩 니 다. 
    upstream  testproxy  { 
  •   server   127.0.0.1:8080 weight=10; 
  •   server   127.0.0.1:8081 weight=10; 

  •   server   192.168.0.11:8080 backup; 
  • 좋은 웹페이지 즐겨찾기