ปรับแต่งเธรด

Wildfly ใช้การกำหนดค่าระบบย่อย ระบบย่อยเป็นชุดของฟังก์ชั่นเพิ่มเติมที่เพิ่มเข้าไปในเซิร์ฟเวอร์หลักโดยการขยาย ระบบย่อยให้ความสามารถในการประมวลผล servlet จากระบบย่อยเช่นเดียวกับ EE, EJB, IO และอื่นๆ เป็นต้น โปรไฟล์คือรายชื่อระบบย่อยที่มีชื่อ พร้อมด้วยรายละเอียดการกำหนดค่าของระบบย่อยแต่ละระบบ

EE Subsystem ระบบย่อย EE ช่วยให้คุณสามารถกำหนดค่าฟังก์ชั่นทั่วไปในแพลตฟอร์ม JavaEE เช่นการกำหนดโมดูลทั่วโลกการเปิดใช้งานการแทนที่แอตทริบิวต์ตามคำอธิบายและการกำหนดค่าการเชื่อมต่อเริ่มต้น

managed executor service context-service ชื่อของบริการบริบทที่จะใช้โดยตัวดำเนินการ core-threads จำนวนเธรดขั้นต่ำที่ตัวดำเนินการใช้ หากไม่ได้กำหนด ขนาดคอร์เริ่มต้นจะคำนวณตามจำนวนโปรเซสเซอร์ ไม่แนะนำให้มีค่าเป็นศูนย์และในบางกรณีอาจใช้ไม่ได้ ดูแอตทริบิวต์ความยาวคิวสำหรับรายละเอียดเกี่ยวกับวิธีการใช้ค่านี้เพื่อกำหนดกลยุทธ์การเข้าคิว hung-task-threshold รันไทม์เป็นมิลลิวินาทีสำหรับงานที่ต้องพิจารณาว่าหยุดทำงานโดยบริการตัวดำเนินการที่มีการจัดการ หากค่าเป็น 0 งานจะไม่ถูกพิจารณาว่าหยุดทำงาน jndi-name ชื่อ JNDI เพื่อค้นหาบริการตัวดำเนินการที่ได้รับการจัดการ keepalive-time เมื่อจำนวนของเธรดมากกว่าแกนหลัก นี่คือเวลาสูงสุดในหน่วยมิลลิวินาที ที่เธรดที่ไม่ได้ใช้งานส่วนเกินจะรองานใหม่ก่อนที่จะยุติ long-running-tasks ตั้งค่าสถานะซึ่งบอกใบ้ระยะเวลาของงานที่ดำเนินการโดยผู้ดำเนินการ max-threads จำนวนเธรดสูงสุดที่ตัวดำเนินการใช้ หากปล่อยไว้โดยไม่กำหนด ค่าจากขนาดคอร์จะถูกใช้ ค่านี้จะถูกละเว้นหากใช้คิวที่ไม่มีขอบเขต (ในกรณีนั้นจะใช้เฉพาะคอร์-เธรดเท่านั้น) queue-length ความจุของคิวงานตัวดำเนินการ ความยาว 0 หมายถึงการส่งต่อโดยตรงและการปฏิเสธที่อาจเกิดขึ้นจะเกิดขึ้น ความยาวที่ไม่ได้กำหนด (ค่าเริ่มต้น) หรือ Integer.MAX_VALUE ระบุว่าควรใช้คิวที่ไม่มีขอบเขต ค่าอื่นๆ ทั้งหมดระบุขนาดคิวที่แน่นอน หากมีการใช้คิวแบบไม่จำกัดหรือการส่งต่อโดยตรง จำเป็นต้องใช้ค่าคอร์เธรดที่มากกว่าศูนย์ reject-policy นโยบายที่จะใช้กับงานที่ถูกยกเลิก thread-factory ชื่อของโรงงานเธรดที่จะใช้โดยผู้ดำเนินการ

ระบบย่อย IO ระบบย่อย IO อนุญาตให้คุณกำหนดผู้ปฏิบัติงานและพูลบัฟเฟอร์ที่จะใช้โดยระบบย่อยอื่น

worker io-threads ระบุจำนวนของเธรด I/O ที่จะสร้างสำหรับผู้ปฏิบัติงาน หากไม่ระบุ ระบบจะเลือกค่าเริ่มต้นซึ่งคำนวณโดย cpuCount * 2 stack-size ขนาดสแต็ก (เป็นไบต์) เพื่อพยายามใช้สำหรับเธรดของผู้ปฏิบัติงาน task-keepalive ระบุจำนวนมิลลิวินาทีเพื่อรักษาเธรดงานที่ไม่ใช่คอร์ให้คงอยู่ task-max-threads ระบุจำนวนเธรดสูงสุดสำหรับ pool.if หากไม่ได้ตั้งค่าให้ใช้ค่าเริ่มต้นที่คำนวณโดยสูตร cpuCount * 16

buffer-pool buffer-size ขนาดของแต่ละส่วนบัฟเฟอร์ในหน่วยไบต์ หากไม่ได้ตั้งค่าที่เหมาะสมจะถูกคำนวณตามทรัพยากร RAM ที่มีอยู่ในระบบของคุณ buffers-per-slice จำนวนบัฟเฟอร์ต่อสไลซ์ หากไม่ได้ตั้งค่าที่เหมาะสมจะคำนวณตามทรัพยากร RAM ที่มีอยู่ในระบบของคุณ direct-buffers พูลบัฟเฟอร์ใช้บัฟเฟอร์โดยตรง บางแพลตฟอร์มไม่รองรับบัฟเฟอร์โดยตรง

Processor Core คอร์โปรเซสเซอร์ (หรือเรียกง่ายๆ ว่า "คอร์") คือโปรเซสเซอร์แต่ละตัวภายในซีพียู คอมพิวเตอร์จำนวนมากในปัจจุบันมีโปรเซสเซอร์แบบมัลติคอร์ ซึ่งหมายความว่า CPU มีมากกว่าหนึ่งคอร์

เป็นเวลาหลายปีที่ซีพียูคอมพิวเตอร์มีเคอร์เนลเดียว ในช่วงต้นทศวรรษ 2000 เมื่อความเร็วนาฬิกาโปรเซสเซอร์เริ่มมีเสถียรภาพผู้ผลิตซีพียูจำเป็นต้องหาวิธีอื่นเพื่อปรับปรุงประสิทธิภาพการประมวลผล ในขั้นต้นพวกเขาทำได้โดยการติดตั้งโปรเซสเซอร์หลายตัวในคอมพิวเตอร์ระดับไฮเอนด์ แม้ว่าจะมีประสิทธิภาพ แต่ก็เพิ่มต้นทุนที่สำคัญของคอมพิวเตอร์และประสิทธิภาพการประมวลผลหลายจะถูก จำกัด โดยความเร็วของบัสระหว่าง CPU ด้วยการรวมโปรเซสเซอร์บนชิปตัวเดียว ผู้ผลิต CPU สามารถเพิ่มประสิทธิภาพได้อย่างมีประสิทธิภาพมากขึ้นด้วยต้นทุนที่ต่ำลง หน่วยประมวลผลแต่ละหน่วยกลายเป็นที่รู้จักในชื่อ "คอร์" แทนที่จะเป็นโปรเซสเซอร์ ในช่วงกลางทศวรรษที่ 2000 CPU แบบดูอัลคอร์และควอดคอร์เริ่มเข้ามาแทนที่การกำหนดค่าหลายโปรเซสเซอร์ ในขณะที่ในตอนแรกมีเพียงคอมพิวเตอร์ระดับไฮเอนด์เท่านั้นที่มีหลายคอร์ แต่ทุกวันนี้พีซีเกือบทั้งหมดมีโปรเซสเซอร์แบบมัลติคอร์

Thread เธรดของโปรแกรมคอมพิวเตอร์ช่วยให้โปรแกรมสามารถดำเนินการอย่างต่อเนื่องหรือหลายครั้งในครั้งเดียว แต่ละเธรดในโปรแกรมจะระบุกระบวนการที่ทำงานเมื่อโปรแกรมร้องขอ เธรดมักจะได้รับการจัดลำดับความสำคัญบางอย่างซึ่งหมายความว่าเธรดบางอย่างมีความสำคัญมากกว่าคนอื่นๆ เมื่อ CPU ประมวลผลหนึ่งเธรดเสร็จสิ้น ก็สามารถเรียกใช้เธรดถัดไปที่รออยู่ในบรรทัดได้ อย่างไรก็ตาม ไม่ใช่ว่าเธรดจะต้องเข้าแถวรอที่เคาน์เตอร์เช็กเอาต์ของ Target ในวันเสาร์ก่อนวันคริสต์มาส เธรดแทบจะต้องรอนานกว่าสองสามมิลลิวินาทีก่อนที่จะทำงาน โปรแกรมคอมพิวเตอร์ที่ใช้ "มัลติเธรด" สามารถรันหลายเธรดพร้อมกันได้ ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่รองรับมัลติเธรดที่ระดับระบบ หมายความว่าเมื่อโปรแกรมหนึ่งพยายามใช้ทรัพยากร CPU ของคุณทั้งหมด คุณยังคงสามารถเปลี่ยนไปใช้โปรแกรมอื่นได้ และบังคับให้โปรแกรมที่ใช้ CPU ร่วมกันใช้โปรเซสเซอร์เพียงเล็กน้อย คำว่า "เธรด" ยังสามารถหมายถึงชุดของโพสต์ที่เกี่ยวข้องในการสนทนาออนไลน์ กระดานข่าวบนเว็บประกอบด้วยหัวข้อหรือเธรดมากมาย การตอบกลับที่โพสต์ในการตอบกลับการโพสต์ต้นฉบับนั้นเป็นส่วนหนึ่งของเธรดเดียวกันทั้งหมด ในอีเมล เธรดสามารถอ้างถึงชุดของการตอบกลับกลับไปกลับมาเกี่ยวกับข้อความบางอย่าง

JVM Options มีตัวเลือกสามประเภทที่คุณสามารถรวมไว้ใน JVM ของคุณ ตัวเลือกมาตรฐาน ไม่ใช่มาตรฐาน และตัวเลือกขั้นสูง หากคุณลองใช้ตัวเลือกขั้นสูง คุณจะใช้ตัวเลือกกับ -XX เสมอ ในทำนองเดียวกัน หากคุณใช้ตัวเลือกที่ไม่ได้มาตรฐาน คุณใช้ -X ตัวเลือกมาตรฐานไม่ได้เสริมอะไรให้กับตัวเลือก

Java heap size

-Xms - set initial Java heap size -Xmx - set maximum Java heap size -Xss - set java thread stack size

Xms ตัวเลือกนี้คือการกำหนดขนาดฮีปเริ่มต้นสำหรับ JVM เช่น Xms2048m ซึ่งหมายความว่าขนาดฮีปเริ่มต้นของ JVM คือประมาณ 2 GBดังนั้น เมื่อ JVM เริ่มทำงาน หน่วยความจำจะมีฮีปขนาดใหญ่มาก แปลกใจใช่! สิ่งนี้ดำเนินการเพื่อป้องกันการปรับขนาดระหว่างการเริ่มต้นและปรับปรุงเวลาเริ่มต้นของ JVM Xmx ตัวเลือกนี้ใช้ในการกำหนดขนาดของปริมาณสูงสุดของ JVM เช่น Xmx2048m ซึ่งหมายความว่า JVM มีขนาดสะสมสูงสุดเพียง 2GB โดยพื้นฐานแล้ว Xms และ Xmx จะอยู่ด้วยกันเสมอ

PermGen Size ตัวเลือก JVM ก่อนหน้านี้กำหนดขนาดของหน่วยความจำฮีป แต่ -XX:PermSize คือการกำหนดขนาดของพื้นที่ PermGen ที่ซึ่งกลุ่มสตริงและข้อมูลเมตาของคลาสถูกบันทึกไว้ ตัวเลือกนี้มีผลอย่างยิ่งสำหรับเว็บเซิร์ฟเวอร์อย่าง Tomcat ซึ่งมักจะโหลดคลาสของเว็บแอพพลิเคชันในระหว่างการปรับใช้ อย่างไรก็ตาม มันคุ้มค่าที่จะตระหนักว่าพื้นที่ PermGen ถูกครอบครองโดย Metaspace ใน Java 8 และตัวเลือกนี้ใช้ไม่ได้หากคุณใช้งานกับ JRE 8 JVM การจัดการข้อผิดพลาด 'OutOfMemory' ในการทริกเกอร์ฮีปดัมพ์เมื่อหน่วยความจำไม่เพียงพอ คุณสามารถใช้ -XX:+HeapDumpOnOutOfMemoryError ตัวเลือก JVM นี้สร้างการถ่ายโอนข้อมูลสแต็กเมื่อ JVM ของคุณตายโดยมีข้อผิดพลาด OutOfMemory ไม่มีค่าใช้จ่ายใดๆ เว้นแต่จะมี OOM เกิดขึ้นจริงๆ แฟล็กนี้เป็นสิ่งจำเป็นสำหรับระบบการผลิตเนื่องจากเป็นวิธีเดียวที่จะระบุปัญหาอย่างลึกซึ้ง

ฮีปดัมพ์จะถูกตั้งค่าใน "ไดเร็กทอรีปัจจุบัน" ของ JVM ตามค่าเริ่มต้น หากคุณต้องการสร้างฮีปดัมพ์ในไดเร็กทอรีเฉพาะ ให้เรียกใช้

-XX:HeapDumpPath= [path-to-heap-dump-directory] -XX:+UseGCOverheadLimit -XX:OnOutOfMemoryError="< cmd args >;< cmd args >"

ไฟล์ฮีปดัมพ์อาจมีขนาดใหญ่ถึงกิกะไบต์ ดังนั้น ตรวจสอบให้แน่ใจว่าระบบไฟล์ปลายทางมีความจุเพียงพอ หากเราต้องการรีสตาร์ทเซิร์ฟเวอร์ทันทีหลังจากเกิดหน่วยความจำไม่เพียงพอเราสามารถตั้งค่าพารามิเตอร์นี้ได้ - XX: OnOutOfMemoryError = "shutdown-r" ติดตามการโหลดและถอนการติดตั้งคลาส -XX:+TraceClassLoading และ -XX:+TraceClassUnloading เป็น JVM สองตัวเลือกที่เราใช้เพื่อพิมพ์ข้อมูลการบันทึกเมื่อใดก็ตามที่คลาสโหลดลงใน JVM หรือยกเลิกการโหลดจาก JVM แฟล็ก JVM เหล่านี้มีประโยชน์หากคุณมีการรั่วไหลของหน่วยความจำประเภทใดก็ตามที่เชื่อมโยงกับตัวโหลดคลาสและสงสัยว่าคลาสไม่ได้ถูกขนถ่ายหรือรวบรวมขยะ

การกำหนดค่ามาตรฐานที่แนะนำสำหรับ ONEWEB

Last updated