Mengkonfigurasi Kumpulan Benang untuk Pelayan Web Java

1. Pengenalan

Dalam tutorial ini, kita melihat konfigurasi kumpulan utas untuk pelayan aplikasi web Java seperti Apache Tomcat, Glassfish Server, dan Oracle Weblogic.

2. Kumpulan Thread Pelayan

Kumpulan utas pelayan digunakan dan dikelola oleh pelayan aplikasi web untuk aplikasi yang digunakan. Kumpulan utas ini ada di luar wadah web atau servlet sehingga tidak tertakluk pada batas konteks yang sama.

Tidak seperti utas aplikasi, utas pelayan tetap wujud walaupun aplikasi yang digunakan dihentikan.

3. Apache Tomcat

Pertama, kita dapat mengkonfigurasi kumpulan thread pelayan Tomcat melalui kelas konfigurasi Executor di pelayan kita.xml :

minSpareThreads adalah terkecil kolam, termasuk semasa permulaan. maxThreads adalah kumpulan terbesar sebelum pelayan mula mengejar permintaan.

Tomcat menetapkannya masing-masing kepada 25 dan 200. Dalam konfigurasi ini, kami menjadikan kumpulan utas sedikit lebih kecil daripada lalai.

3.1. Tomcat yang dibenamkan

Begitu juga, kita dapat mengubah pelayan Tomcat tertanam untuk Spring Boot untuk mengkonfigurasi kumpulan utas dengan menetapkan harta aplikasi:

server.tomcat.max-threads=250

Bermula dengan Boot 2.3, harta tanah telah berubah menjadi:

server.tomcat.threads.max=250

4. Ikan Gelas

Seterusnya, mari kita kemas kini pelayan Glassfish kami.

Glassfish menggunakan arahan pentadbir berbeza dengan fail konfigurasi XML Tomcat, server.xml. Dari arahan, kami menjalankan:

create-threadpool

Kita boleh menambah untuk membuat-threadpool bendera maxthreadpoolsize dan minthreadpoolsize. Mereka berfungsi sama dengan Tomcat minSpareThreads dan maxThreads :

--maxthreadpoolsize 250 --minthreadpoolsize 25

Kami juga dapat menentukan berapa lama utas boleh terbiar sebelum kembali ke kolam:

--idletimeout=2

Kemudian, kami memberikan nama kumpulan utas kami di akhir:

asadmin> create-threadpool --maxthreadpoolsize 250 --minthreadpoolsize 25 --idletimeout=2 threadpool-1

5. Weblogik

Oracle Weblogic memberi kita kemampuan untuk mengubah kumpulan thread penyesuaian diri dengan WorkManager.

Begitu juga dengan urutan benang, WorkManager menguruskan kumpulan utas sebagai barisan. Walau bagaimanapun, WorkManager menambah utas dinamik berdasarkan throughput masa nyata. Weblogic melakukan analisis terhadap throughput secara berkala untuk mengoptimumkan penggunaan utas.

Apa maksudnya ini bagi kita? Ini bermaksud bahawa walaupun kita dapat mengubah kumpulan utas, pelayan web akhirnya akan memutuskan sama ada akan menelurkan benang baru.

Kami boleh mengkonfigurasi kumpulan utas kami di Konsol Pentadbiran Weblog:

Mengemaskini Thread sendiri Tuning Minimum Pool Saiz dan Tuning sendiri Thread Pool Saiz Maksimum nilai menetapkan min dan sempadan max untuk WorkManagers.

Perhatikan nilai Stuck Thread Max Time dan Stuck Thread Timer Interval . Ini membantu WorkManager mengelaskan benang yang tersekat.

Kadang kala proses yang lama dapat menyebabkan penumpukan benang yang tersekat. WorkManager akan menelurkan benang baru dari kumpulan utas untuk mengimbangi. Sebarang kemas kini ke nilai-nilai ini dapat memperpanjang masa untuk membiarkan proses selesai.

Benang yang tersekat mungkin menunjukkan masalah kod, jadi lebih baik mengatasi punca daripada menggunakan jalan penyelesaian.

6. Kesimpulannya

Dalam artikel ringkas ini, kami melihat pelbagai cara untuk mengkonfigurasi kumpulan utas pelayan aplikasi.

Walaupun terdapat perbezaan dalam cara pelayan aplikasi menguruskan pelbagai kumpulan utas, mereka dikonfigurasi menggunakan konsep yang serupa.

Akhirnya, ingatlah bahawa mengubah nilai konfigurasi untuk pelayan web bukanlah pembaikan yang sesuai untuk reka bentuk kod dan aplikasi yang buruk.