टॉम्कट - मैक्सट्रेड्स बनाम मैक्सकनेक्ट्स


82

Tomcat server.xmlमें maxThreadsबनाम क्या हैmaxConnections

मैं समझता हूं कि 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

टॉमकैट 2 मोड में काम कर सकता है:

  • BIO - अवरुद्ध I / O (प्रति कनेक्शन एक धागा)
  • NIO - गैर-अवरोधक I / O (थ्रेड्स की तुलना में कई अधिक कनेक्शन)

टॉमकैट 7 डिफ़ॉल्ट रूप से BIO है , हालांकि सर्वसम्मति से लगता है कि "जैव का उपयोग न करें क्योंकि Nio हर तरह से बेहतर है"। आप इसे फ़ाइल में protocolपैरामीटर का उपयोग करके सेट करते server.xmlहैं।

  • BIO होगा HTTP/1.1याorg.apache.coyote.http11.Http11Protocol
  • NIO होगा org.apache.coyote.http11.Http11NioProtocol

यदि आप BIO का उपयोग कर रहे हैं तो मेरा मानना ​​है कि उन्हें कमोबेश यही होना चाहिए।

यदि आप NIO का उपयोग कर रहे हैं तो वास्तव में "maxConnections = 1000" और "maxThreads = 10" भी उचित हो सकता है। चूक अधिकतम कर रहे हैं = 10,000 और अधिकतम सीमा = 200। NIO के साथ, प्रत्येक थ्रेड किसी भी संख्या में कनेक्शन की सेवा कर सकता है, आगे और पीछे स्विच कर सकता है लेकिन कनेक्शन को बनाए रख सकता है ताकि आपको सभी सामान्य हैंडशेकिंग करने की आवश्यकता न हो जो विशेष रूप से HTTPS के साथ-साथ HTTP के साथ भी एक समस्या है। आप कनेक्शन को लंबे समय तक बनाए रखने के लिए "KeepAlive" पैरामीटर को समायोजित कर सकते हैं और इससे सब कुछ गति होनी चाहिए।


डिफ़ॉल्ट प्रोटोकॉल "HTTP / 1.1" प्रतीत होता है, जो एक ऑटो-स्विचिंग तंत्र ( tomcat.apache.org/tomcat-7.0-doc/config/http.html ) का उपयोग करता है ... "या तो एक अवरुद्ध जावा आधारित कनेक्टर या चयन करने के लिए" APR / देशी आधारित कनेक्टर। यदि PATH (Windows) या LD_LIBRARY_PATH (अधिकांश यूनिक्स सिस्टम पर) परिवेश चर में Tomcat मूल लाइब्रेरी शामिल है, तो APR / देशी कनेक्टर का उपयोग किया जाएगा। यदि मूल निवासी नहीं मिल सकता है, तो अवरुद्ध जावा आधारित कनेक्टर। इस्तेमाल किया जाएगा "
alpa

13

से बिलाव प्रलेखन , मैं अवरुद्ध के लिए / ओ (जैव), का डिफ़ॉल्ट मान maxConnectionsका मूल्य है maxThreads, जब तक कि निर्वाहक (थ्रेड पूल) जिस स्थिति में प्रयोग किया जाता है, निर्वाहक से 'maxThreads' का मान का उपयोग किया जाएगा। गैर-अवरुद्ध IO के लिए, यह निर्भर नहीं लगता है maxThreads


7
मैं नीच नहीं हूं लेकिन मुझे लगता है कि आपने इस सवाल का जवाब नहीं दिया है। आपने केवल समझा दिया है कि डिफॉल्ट क्या हैं, बिना प्रश्नकर्ता को अवधारणाओं को सिखाए, और प्रश्न अवधारणाओं के बारे में है।
टिम कूपर

2
समझ गया। मैंने उनके बीच संबंध पूछने के बजाय सवाल उठाया कि वास्तव में उनका क्या मतलब है।
स्वप्निल

1
यह उत्तर भी उपयोगी था, क्योंकि यह स्पष्ट करता है कि BIO के साथ भी, maxConnections maxThreads से अधिक हो सकता है (मुझे लगता है कि यह टॉमकैट 7 में नया है)
इवान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.