Tomcat 의 비동기 통신 설정-NIO 사용

Tomcat 6.X 는 JCP 의 Servlet 2.5 와 JSP 2.1 의 규범 을 실 현 했 고 다른 많은 유용 한 기능 을 포함 하여 개발 되 었 다.
웹 응용 프로그램 과 웹 서 비 스 를 배치 하 는 튼튼한 플랫폼 입 니 다.
       NIO(No-blocking I/O)는 JDK 1.4 부터 NIO API 는 버퍼 기반 이 며,비 차단 I/O 작업 을 할 수 있 는 API 를 제공 합 니 다.
끌어들이다
       오픈 소스 웹 서버 의 자바 로 서 tomcat 는 거의 웹 개발 자 개발,테스트 의 최 우선 선택 이 고 다른 상업 서비스 가 많 습 니 다.
개발 자 들 도 tomcat 를 개발 할 때 우선 선택 하고 배치 할 때 상업 서버 에 애플 리 케 이 션 을 발표 합 니 다.있다
많은 상업 응용 이 tomcat 에 배치 되 어 있 고 tomcat 는 그 핵심 적 인 응용 을 담 고 있다.하지만 많은 개발 자 들 이 왜 자신의 대응 에 현혹 되 고 있 습 니까?
tomcat 를 플랫폼 으로 사용 할 때 동시 다발 사용자 가 일정 수량 을 초과 하면 서버 가 매우 바 빠 지고 곧 나타 납 니 다.
connection refect 의 오류 입 니 다.그러나 많은 상업 응용 프로그램 이 tomcat 에 배치 되 어 운행 되 고 있 지만 무사 하 다.
      그 중 하 나 는 설정 이 좋 은 tomcat 가 APR(Apache Portable Runtime)을 사용 하기 때 문 입 니 다.APR 은?
Apache HTTP Server2.x 의 핵심 은 고도 로 이식 가능 한 로 컬 라 이브 러 리 로 고성능 의 UXIN I/O 조작,저 성능 을 사용 합 니 다.
자바 io 작업,하지만 APR 은 많은 자바 개발 자 들 에 게 조금 어 려 울 수 있 습 니 다.많은 OS 플랫폼 에서 재 편집 이 필요 할 수 있 습 니 다.
APR 을 번역 하 다.그러나 Tomcat 6.0 이후 자바 개발 자 는 NIO 기술 로 tomcat 의 병행 처리 능력 을 쉽게 향상 시 킬 수 있 습 니 다.
그런데 왜 NIO 가 tomcat 의 병행 처리 능력 을 향상 시 킬 수 있 는 지 자바 전통 io 와 자바 NIO 의 차 이 를 살 펴 보 자.
    
자바 의 전통 적 인 IO 작업 은 모두 차단 식(blocking I/O)입 니 다.socket 의 프로 그래 밍 기반 이 있 으 면 socket 과 접촉 한 적 이 있 습 니 다.
socket 을 막 지 않 고 socket 을 막 는 것 은 accept,read,write 등 IO 작업 을 할 때 조건 에 맞 는 자금 이 없 으 면
자원 이 있 을 때 까지 바로 돌아 오지 않 고 기 다 립 니 다.socket 을 막 는 것 이 아니 라 select 를 실행 할 때 자원 이 없 을 때
막 히 면 자원 에 맞 을 때 신 호 를 되 돌려 주 고 프로그램 은 accept,read,write 등 을 수행 할 수 있 습 니 다.보통 입 니 다.
소켓 을 막 으 면 보통 스 레 드 accept socket 을 엽 니 다.이번 socket 요청 을 읽 었 을 때 하 나 를 엽 니 다.
이 socket 요청 을 단독 스 레 드 로 처리 하기;비 차단 socket 을 사용 하면 보통 하나의 스 레 드 만 있 고 처음에는 select 모양 이 었 습 니 다.
신호 가 있 을 때 다 중 재 활용(Multiplexing)기술 을 통 해 지정 한 스 레 드 탱크 에 전달 하여 요청 을 처리 할 수 있 습 니 다.
이후 원래 스 레 드 는 계속 select 상태 입 니 다.가장 간단 한 다 중 재 활용 기술 은 자바 파이프(Pipe)를 통 해 이 루어 질 수 있다.하면,만약,만약...
클 라 이언 트 의 동시 다발 요청 이 많 을 때 우 리 는 클 라 이언 트 의 동시 다발 요청 보다 적은 스 레 드 수 를 사용 하여 이 요청 을 처리 할 수 있 습 니 다.
및 즉시 처리 요청 은 자바 파이프 나 대기 열 에 막 혀 스 레 드 탱크 의 처 리 를 기다 릴 수 있 습 니 다.부탁 이 복잡 하 게 들 리 는데,이 싸움 에서
도 를 구축 하 는 자바 세계 에서 현재 우수한 NIO 의 구조 가 개발 자 들 이 사용 하기에 편리 하 다.예 를 들 어 Grizzly,Apache Mina 등 이다.
등,고성능 네트워크 서버 를 어떻게 만 드 는 지 에 관심 이 있다 면,이 소스 코드 들 을 연구 할 수 있 습 니 다.
      쉽게 말 하면 웹 서버 에서 IO(BIO)를 차단 하 는 것 과 NIO 의 중요 한 차이 점 은 우리 가 BIO 를 사용 할 때 흔히
모든 웹 요청 에 다 중 스 레 드 를 도입 합 니 다.모든 웹 은 하나의 단독 스 레 드 를 요청 하기 때문에 병발 량 이 올 라 가면 스 레 드 수가 올 라 갑 니 다.
CPU 는 스 레 드 전환 에 바 쁘 기 때문에 BIO 는 높 은 스루풋 과 신축 가능 한 웹 서버 에 적합 하지 않 습 니 다.NIO 는 단일 스 레 드(단일 스 레 드)를 사용 합 니 다.
하나의 CPU)또는 소량의 다 중 스 레 드(다 중 CPU)만 사용 하여 Socket 을 받 아들 이 고 스 레 드 탱크 에서 pipe 나 대기 열 에 막 힌 것 을 처리 하 십시오.
제발.그러면 OS 가 TCP 연결 을 받 아들 일 수만 있다 면 웹 서버 에서 이 요청 을 처리 할 수 있 습 니 다.웹 서버 의 가 치 를 크게 향상 시 켰 습 니 다.
신축성
    설정 을 살 펴 보 겠 습 니 다.server.xml 에서 HTTP Connector 를 다음 과 같이 변경 하면 됩 니 다.
                   connectionTimeout="20000"
               redirectPort="8443" />
    ...로 바꾸다
                   connectionTimeout="20000"
               redirectPort="8443" />
그리고 서버 를 시작 하면 org.apache.coyote.http 11.Http11NioProtocol start 의 정 보 를 볼 수 있 습 니 다.NIO 가 시작 되 었 음 을 표시 합 니 다.다른 설정 은 공식 설정 문 서 를 참고 하 십시오.
Enjoy it.
마지막 으로 공식 문서 에 tomcat 의 세 가지 커 넥 터 방식 을 간단하게 비교 합 니 다.
   
Java Blocking Connector       Java Nio Blocking Connector       APR Connector

Classname         Http11Protocol                  Http11NioProtocol         Http11AprProtocol

Tomcat Version   3.x 4.x 5.x 6.x                       6.x                     5.5.x 6.x

Support Polling         NO                             YES                        YES

Polling Size           N/A                   Unlimited - Restricted by mem        Unlimited

Read HTTP Request     Blocking                     Blocking                       Blocking

Read HTTP Body        Blocking                     Blocking                       Blocking

Write HTTP Response   Blocking                     Blocking                       Blocking

SSL Support           Java SSL                     Java SSL                       OpenSSL

SSL Handshake         Blocking                     Non blocking                   Blocking

Max Connections       maxThreads                   See polling size               See polling size

좋은 웹페이지 즐겨찾기