Apabila memulakan aplikasi Spring Boot, kami biasanya menggunakan tetapan lalai yang disediakan oleh pemula, yang mencukupi untuk kebanyakan kes. Walau bagaimanapun, jika kami memerlukan prestasi, terdapat pelarasan khusus yang boleh dibuat, seperti yang akan ditunjukkan dalam bahagian pertama artikel ini.
Aplikasi web, RESFul, yang menggunakan Spring MVC, secara amnya menambah kebergantungan spring-boot-starter-web, yang secara lalai menggunakan Tomcat sebagai pelayan web. Walau bagaimanapun, terdapat alternatif yang lebih menarik, seperti Undertow, iaitu pelayan web berprestasi tinggi, dengan seni bina tak segerak dan tidak menyekat, yang membolehkan anda mengendalikan sejumlah besar sambungan serentak dengan cekap, menjadikannya sesuai untuk aplikasi berprestasi tinggi. Kami tidak mengatakan Tomcat buruk, tetapi kami boleh memberi peluang Undertow.
Untuk kita menggunakan Undertow sebagai pelayan web, kita perlu mengabaikan kebergantungan spring-boot-starter-tomcat yang spring-boot-starter-web sudah tambah dan kemudian tambah spring-boot-starter-undertow.
Menggunakan pom.xml:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusions> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency> </dependencies>
Menggunakan build.gradle:
dependencies { implementation('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } implementation 'org.springframework.boot:spring-boot-starter-undertow' }
Melalui application.properties atau application.yml, kami boleh mengkonfigurasi berapa banyak benang IO dan berapa banyak benang pekerja kami mahu pelayan digunakan.
Menggunakan application.yml
server: undertow: threads: io: 4 worker: 64
Menggunakan application.properties
server.undertow.threads.io=4 server.undertow.threads.worker=64
I/O Benang melakukan operasi tidak menyekat dan tidak boleh melakukan operasi menyekat, kerana mereka bertanggungjawab untuk mendengar sambungan yang tiba dalam aplikasi, dan kemudian menghantarnya ke baris gilir pemprosesan. Nilai biasa ialah dua I/O Benang setiap teras CPU.
benang pekerja melaksanakan operasi menyekat, seperti permintaan Servlet yang dihantar ke baris gilir pemprosesan oleh I/O Benang. Nilai ideal bergantung pada beban kerja, tetapi biasanya disyorkan untuk mengkonfigurasi sekitar 10 utas bagi setiap teras CPU.
Untuk mendapatkan maklumat yang lebih terperinci dan lebih banyak pilihan yang boleh diterokai, hanya pergi ke dokumentasi Undertow.
Mampatan data ialah ciri yang bertujuan untuk mengurangkan saiz badan respons HTTP, yang seterusnya boleh meningkatkan prestasi aplikasi kami dengan mengurangkan jumlah data yang dihantar melalui rangkaian.
Mengkonfigurasi pemampatan data dalam Spring Boot adalah tugas yang remeh, kerana ia menyokong fungsi ini.
Menggunakan application.yml
server: compression: enabled: true mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json min-response-size: 1024
Menggunakan application.properties
server.compression.enabled=true server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json server.compression.min-response-size=1024
server.compression.enabled: Mendayakan/melumpuhkan pemampatan.
server.compression.mime-types: Senarai jenis MIME yang harus dimampatkan.
server.compression.min-response-size: Saiz minimum "Kandungan-Panjang" yang diperlukan untuk pemampatan dilakukan.
Dengan ini, kami menutup bahagian pertama artikel. Dalam bahagian seterusnya, kami akan mempelajari lebih lanjut tentang Hikari, JPA dan Hibernate serta mempelajari cara mengkonfigurasinya, untuk meningkatkan lagi prestasi aplikasi Spring Boot.
Atas ialah kandungan terperinci Meningkatkan prestasi aplikasi Spring Boot - Bahagian I. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!