การตั้งค่าตัวเชื่อมต่อ JBoss EAP 6.3 Http

ฉันค้นคว้าเกี่ยวกับ Google มาระยะหนึ่งแล้วเพื่อทำความเข้าใจว่าเซิร์ฟเวอร์ยอมรับคำขอ http และดำเนินการอย่างไร ถ้าฉันเข้าใจถูกต้อง ควรมี Listener บนพอร์ต 8080 ที่คอยรับฟังคำขอ http ขาเข้าอยู่เสมอ และทันทีที่ได้รับคำขอ ก็ควรจะสามารถสร้างเธรดและมอบหมายงานให้กับเธรดนั้นได้

ด้วยความรู้ข้างต้น สิ่งที่ฉันพยายามทำความเข้าใจคือ max-connections และ max-threads คืออะไรขณะตั้งค่า http-connector นอกจากนี้หากเราไม่ได้ระบุสิ่งเหล่านี้อย่างชัดเจน แล้วค่าสูงสุดคือเท่าใด

    <subsystem xmlns="urn:jboss:domain:web:2.1" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
        </virtual-server>
    </subsystem>

เพื่อให้เจาะจงมาก นี่คือคำถามของฉันในรูปแบบหัวข้อย่อย:

  • max-connection=maximum http Listeners ที่สามารถประมวลผลคำขอ http ได้พร้อมกันหรือไม่
  • max-threads=maximum threads ที่สร้างขึ้นในกลุ่มเธรดภายในที่ผู้ฟัง http ใช้เพื่อมอบหมายงานให้หรือไม่
  • ด้วยการตั้งค่าตัวเชื่อมต่อ http เริ่มต้นตามที่กล่าวไว้ข้างต้น ค่าเริ่มต้นของการเชื่อมต่อสูงสุดและเธรดสูงสุดคืออะไร
  • ปัจจัยในการตัดสินใจในการตั้งค่าการเชื่อมต่อสูงสุดและเธรดสูงสุดคืออะไร ขึ้นอยู่กับจำนวนโปรเซสเซอร์และหน่วยความจำที่มีอยู่หรือไม่

ขอบคุณ!


person Samir Shaik    schedule 12.06.2015    source แหล่งที่มา


คำตอบ (1)


การเชื่อมต่อสูงสุด: จำนวนการเชื่อมต่อสูงสุดที่เซิร์ฟเวอร์จะยอมรับและดำเนินการในเวลาใดก็ตาม

หากไม่ได้ตั้งค่าแอ็ตทริบิวต์การเชื่อมต่อสูงสุดบนตัวเชื่อมต่อระบบย่อยของเว็บในแบบสแตนด์อโลน-(*).xml / domain.xml ค่าดีฟอลต์จะถูกคำนวณเป็น:

512 * Runtime.getRuntime().availableProcessors() //for default Java connector
32 * Runtime.getRuntime().availableProcessors() //for native APR connector addon

max-threads: จำนวนสูงสุดของเธรดการประมวลผลคำขอที่จะสร้างโดยตัวเชื่อมต่อนี้ ซึ่งจะเป็นตัวกำหนดจำนวนสูงสุดของคำขอพร้อมกันที่สามารถจัดการได้

EAP 6.x:

/**
 * Maximum amount of worker threads.
 */
protected int maxThreads = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 64 : ((Constants.MAX_THREADS == -1) ? 512 * Runtime.getRuntime().availableProcessors() : Constants.MAX_THREADS);
public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
public int getMaxThreads() { return maxThreads; }

EAP 6.x พร้อมส่วนประกอบดั้งเดิม:

/**
 * Maximum amount of worker threads.
 */
protected int maxThreads = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 32 : ((Constants.MAX_THREADS == -1) ? 32 * Runtime.getRuntime().availableProcessors() : Constants.MAX_THREADS);
public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
public int getMaxThreads() { return maxThreads; }

ฉันเชื่อว่าทั้งสองเหมือนกัน ฉันไม่เคยใช้แอตทริบิวต์การเชื่อมต่อสูงสุด เมื่อใดก็ตามที่จำเป็นต้องกำหนดจำนวนเธรดสูงสุดแบบกำหนดเอง ฉันจะสร้างโรงงานเธรดและพูลเธรดแยกกัน สำหรับข้อมูลเพิ่มเติม โปรดดูที่: redhat doc, ดังนั้น คำถามคำตอบ

person user613114    schedule 11.02.2016