Tomcat-maxThreads 대 maxConnections


82

Tomcat에서 server.xml무엇이 maxThreadsmaxConnections

나는 그것이 maxConnections서버에 열린 연결 수임을 이해 합니다.

그리고 maxThreads요청 처리 스레드의 최대 수입니다.

그러나 두 구성 매개 변수가 함께 작동하는 방식은 분명히 maxConnections1000과 maxThreads10으로 설정되지 않습니다.

두 구성 매개 변수 간의 관계는 무엇입니까?

<Connector 
    port="8443" 
    protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="250" 
    SSLEnabled="true" 
    scheme="https" secure="true"
    clientAuth="false" 
    sslProtocol="TLS" 
    connectiontimeout="20000"
/>

답변:


116

Tomcat은 두 가지 모드로 작동 할 수 있습니다.

  • BIO – I / O 차단 (연결 당 하나의 스레드)
  • NIO 비 차단 I / O (스레드보다 많은 연결)

Tomcat 7기본적으로 BIO 이지만 합의는 "니오가 모든면에서 더 낫기 때문에 Bio를 사용하지 마십시오"로 보입니다. 파일 의 protocol매개 변수 를 사용하여이를 설정 server.xml합니다.

  • BIO는 HTTP/1.1또는org.apache.coyote.http11.Http11Protocol
  • NIO는 org.apache.coyote.http11.Http11NioProtocol

당신이 BIO를 사용한다면 나는 그것들이 어느 정도 동일해야한다고 믿습니다.

NIO를 사용하는 경우 실제로 "maxConnections = 1000"및 "maxThreads = 10"이 합리적 일 수도 있습니다. 기본값은 maxConnections = 10,000 및 maxThreads = 200입니다. NIO를 사용하면 각 스레드가 원하는 수의 연결을 제공 할 수 있으며, 앞뒤로 전환하지만 연결을 유지할 수 있으므로 HTTPS에서는 특히 시간이 많이 걸리지 만 HTTP에서는 문제가되는 일반적인 핸드 셰이 킹을 모두 수행 할 필요가 없습니다. "keepAlive"매개 변수를 조정하여 연결을 더 오래 유지하면 모든 속도가 빨라집니다.


기본 프로토콜은 자동 전환 메커니즘 ( tomcat.apache.org/tomcat-7.0-doc/config/http.html ) 을 사용하는 "HTTP / 1.1"로 나타납니다. "... 차단 Java 기반 커넥터 또는 APR / 네이티브 기반 커넥터. PATH (Windows) 또는 LD_LIBRARY_PATH (대부분의 유닉스 시스템에서) 환경 변수에 Tomcat 네이티브 라이브러리가 포함 된 경우 APR / 네이티브 커넥터가 사용됩니다. 네이티브 라이브러리를 찾을 수없는 경우 차단 Java 기반 커넥터 사용됩니다 "
alpa

13

에서 톰캣 문서 , I를 차단 / O (BIO)의 기본 값은 maxConnections의 값 maxThreads않는 집행자 (스레드 풀)이있는 경우에 사용되는가, 집행자에서 'maxThreads'의 값이 대신 사용됩니다. Non-blocking IO의 경우 maxThreads.


7
나는 반대 투표자가 아니지만 질문에 대답하지 않은 것 같습니다. 질문자에게 개념을 가르치지 않고 기본값이 무엇인지 설명했을 뿐이며 질문은 개념에 관한 것입니다.
Tim Cooper

2
알았다. 나는 그들이 실제로 의미하는 것이 아니라 그들 사이의 관계를 묻는 질문을 받았다.
Swapnil 2014 년

1
이 답변은 또한 유용했습니다. BIO를 사용하더라도 maxConnections가 maxThreads보다 클 수 있음을 명확히하기 때문에 (이것이 Tomcat 7에서 새로운 기능이라고 생각합니다)
Ivan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.