program story

Tomcat-maxThreads 대 maxConnections

inputbox 2020. 11. 18. 09:02
반응형

Tomcat-maxThreads 대 maxConnections


Tomcat server.xml에서 maxThreads 대 maxConnections는 무엇입니까?

maxConnections가 서버에 열려있는 연결의 양이라는 것을 이해합니다.

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

그러나 두 구성 매개 변수가 함께 작동하는 방식은 분명히 maxConnections를 1000으로 maxThreads를 10으로 설정하지 않을 것입니다.

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

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

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"매개 변수를 조정하여 연결을 더 오래 유지하면 모든 속도가 빨라집니다.


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

참고 URL : https://stackoverflow.com/questions/24678661/tomcat-maxthreads-vs-maxconnections

반응형