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 Port: 8080
Document Path: /pscms_hlj_web/p_w_picpaths/logo.jpg
Time taken for tests: 3.671 seconds
Failed requests: 0
Keep-Alive requests: 4254
HTML transferred: 74951226 bytes
Time per request: 862.874 [ms] (mean)
Transfer rate: 20228.99 [Kbytes/sec] received
Connection Times (ms)
Connect: 0 33 67.4 0 261
Waiting: 15 129 61.7 127 261
nginx:
Server Software: nginx/0.7.67
Server Port: 8000
Document Path: /pscms_hlj_web/p_w_picpaths/logo.jpg
Time taken for tests: 0.597 seconds
Failed requests: 0
Keep-Alive requests: 10000
HTML transferred: 176190000 bytes
Time per request: 59.721 [ms] (mean)
Transfer rate: 293309.69 [Kbytes/sec] received
Connection Times (ms)
Connect: 0 2 8.1 0 44
Waiting: 0 44 19.8 42 93
nginx 의 성능 이 훨씬 좋 습 니 다. 이것 은 이 페이지 가 캐 시 되 는 원인 일 것 입 니 다. 또한 epoll 을 지원 하 는 것 도 높 은 IO 성능 이 향상 되 었 을 것 입 니 다.그러나 이 테스트 에서 도 tomcat 가 안정 적 으로 끊 어 진 것 을 발 견 했 습 니 다. nginx 의 높 은 병행 지원 은 정말 뚜껑 이 아 닙 니 다.
결론
실제 시스템 에 서 는 그렇게 많은 정적 인 내용 이 있 을 수 없습니다. 브 라 우 저 로 컬 에 도 캐 시 가 있 지만 nginx 는 동시 응답 능력 을 어느 정도 향상 시 킬 수 있 습 니 다.잦 은 업데이트 가 필요 없 는 동적 콘 텐 츠 에 대해 서도 정시 캐 시 를 할 수 있 고 페이지 의 열 림 속 도 를 크게 가속 화하 고 백 엔 드 의 압력 을 낮 출 수 있다.온라인 시스템 은 그림, js, css, 정적 html 를 모두 캐 시 할 수 있 으 며, 백 엔 드 는 동적 내용 의 요청 만 받 아들 여 웹 접근 속 도 를 높 일 수 있 습 니 다.
기타 발견
사실 nginx 는 캐 시 내용 을 hash 를 거 쳐 파일 에 넣 었 습 니 다. 테스트 에서 보면 메모리 에서 가 져 온 결과 가 분명 하지만 한 번 은 기록 되 었 을 것 입 니 다.나중에 Liux 아래 에 자체 파일 시스템 이 있 는 것 을 알 게 되 었 습 니 다. / dev / shm 아래 에 기본적으로 메모리 크기 의 절반 입 니 다.이렇게 하면 정말 캐 시 내용 을 이 파일 안에 가리 키 면 됩 니 다.
또한 nginx 도 쌍 기 열 준비 와 부하 균형 을 편리 하 게 실현 할 수 있다.부하 균형 은 weight 를 설정 하여 접근 비율 을 조정 할 수 있 으 며, 시스템 은 자동 으로 요청 을 바 꿀 수 있 습 니 다.듀 플 렉 스 열 비 는 모든 노드 가 사용 할 수 없 을 때 자동 으로 방향 을 바 꾸 는데 이것 은 시스템 업그레이드 시 서 비 스 를 중단 하지 않 을 수 있다.이 설정 들 은 다음 과 같은 설정 을 하면 됩 니 다.
upstream testproxy {
server 192.168.0.11:8080 backup;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
양식 제출 후 제출 버튼 비활성화텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.