Mengonfigurasi Kumpulan Thread untuk Server Web Java

1. Perkenalan

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

2. Kumpulan Thread Server

Kumpulan utas server digunakan dan dikelola oleh server aplikasi web untuk aplikasi yang diterapkan. Kumpulan utas ini ada di luar penampung web atau servlet sehingga mereka tidak tunduk pada batas konteks yang sama.

Tidak seperti thread aplikasi, thread server ada bahkan setelah aplikasi yang diterapkan dihentikan.

3. Apache Tomcat

Pertama, kita dapat mengkonfigurasi kumpulan utas server Tomcat melalui kelas konfigurasi Pelaksana di server.xml kita :

minSpareThreads adalah kumpulan terkecil, termasuk saat startup. maxThreads adalah pool terbesar sebelum server mulai mengantri permintaan.

Tomcat menetapkan default ini masing-masing menjadi 25 dan 200. Dalam konfigurasi ini, kami telah membuat kumpulan utas sedikit lebih kecil dari default.

3.1. Tertanam Tomcat

Demikian pula, kita dapat mengubah server Tomcat tertanam untuk Spring Boot untuk mengkonfigurasi kumpulan utas dengan mengatur properti aplikasi:

server.tomcat.max-threads=250

Dimulai dengan Boot 2.3, properti telah berubah menjadi:

server.tomcat.threads.max=250

4. Ikan Gelas

Selanjutnya, mari perbarui server Glassfish kami.

Glassfish menggunakan perintah admin berbeda dengan file konfigurasi XML Tomcat, server.xml. Dari prompt, kami menjalankan:

create-threadpool

Kita dapat menambahkan ke create-threadpool bendera maxthreadpoolsize dan minthreadpoolsize. Mereka berfungsi mirip dengan Tomcat minSpareThreads dan maxThreads :

--maxthreadpoolsize 250 --minthreadpoolsize 25

Kita juga bisa menentukan berapa lama thread bisa diam sebelum kembali ke pool:

--idletimeout=2

Dan kemudian, kami memberikan nama kumpulan utas kami di bagian akhir:

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

5. Blogic

Oracle Weblogic memberi kita kemampuan untuk mengubah kumpulan thread self-tuning dengan WorkManager.

Sama halnya dengan antrean utas, WorkManager mengelola kumpulan utas sebagai antrean. Namun, WorkManager menambahkan utas dinamis berdasarkan throughput waktu nyata. Weblogic melakukan analisis pada throughput secara teratur untuk mengoptimalkan pemanfaatan utas.

Apa artinya ini untuk kita? Ini berarti bahwa meskipun kami dapat mengubah kumpulan utas, server web pada akhirnya akan memutuskan apakah akan menelurkan utas baru.

Kami dapat mengkonfigurasi kumpulan utas kami di Konsol Admin Blogic:

Memperbarui nilai Ukuran Kumpulan Benang Minimum Penyetelan Sendiri dan Ukuran Kolam Maksimum Benang Penyetelan Otomatis menetapkan batas minimum dan maksimum untuk WorkManagers.

Perhatikan nilai Stuck Thread Max Time dan Stuck Thread Timer Interval . Ini membantu WorkManager mengklasifikasikan utas yang macet.

Terkadang proses yang berjalan lama dapat menyebabkan penumpukan utas yang macet. WorkManager akan menelurkan utas baru dari kumpulan utas untuk mengimbanginya. Pembaruan apa pun pada nilai-nilai ini dapat memperpanjang waktu untuk memungkinkan proses selesai.

Untaian yang macet dapat menjadi indikasi masalah kode, jadi yang terbaik adalah mengatasi akar masalah daripada menggunakan solusi.

6. Kesimpulan

Dalam artikel singkat ini, kami melihat beberapa cara untuk mengonfigurasi kumpulan utas server aplikasi.

Meskipun ada perbedaan dalam cara server aplikasi mengelola berbagai kumpulan utas, mereka dikonfigurasi menggunakan konsep serupa.

Terakhir, ingatlah bahwa mengubah nilai konfigurasi untuk server web bukanlah perbaikan yang sesuai untuk kode yang berkinerja buruk dan desain aplikasi yang buruk.