Apakah kaedah untuk penalaan kontena pelayan java?
1. Mengapa penalaan prestasi projek perlu
Sebelum projek dikeluarkan, projek perlu diuji tekanan untuk mengesan masalah prestasi projek setiap Masalah seperti bilangan permintaan yang kecil yang boleh diselesaikan pada satu masa, kesesakan projek, dan masa pertanyaan data projek yang perlahan perlu ditala selepas pengesanan Ini bermakna jika masa tindak balas antara muka projek anda melebihi sepuluh saat, anda akan melakukannya tidak membuat sebarang pelarasan. Satu siri langkah, maka terdapat masalah dengan projek ini Tujuan penalaan prestasi adalah untuk menjadikan projek lebih optimum, RT (masa tindak balas berjalan) lebih kecil, dan TPS (permintaan yang diterima daripada. pangkalan data sesaat) lebih besar dsb.
Secara amnya dalam perusahaan, JMeter atau K8s akan digunakan beberapa perusahaan akan membina platform ujian tekanan mereka sendiri dan menjalankan ujian tekanan pada projek selepas projek itu ditulis, masa tindak balas projek akan diukur Keperluan, membuat pertimbangan kasar pada data permintaan projek, dan pembangun mesti menulis antara muka berdasarkan keperluan ini Jika masa tindak balas antara muka melebihi data yang ditetapkan, dan projek itu tidak dapat menyokong permintaan yang begitu besar, adalah perlu untuk menjalankan analisis pangkalan data dan projek pada antara muka projek dan projek.
2. Penalaan prestasi bekas servis
2.1 Penalaan Tomcat potong dalam SpringBoot: mengoptimumkan bilangan maksimum utas
Arahan penalaan:
Bilangan utas maksimum maxThreads: mengukur bilangan tugasan yang boleh diproses oleh pelayan web secara serentak
bilangan tunggu maksimum kiraan terima: Baris gilirBilangan maksimum menunggu yang boleh diterima. Melebihi menolak permintaan itu.
Sambungan Maks: Bilangan sambungan maksimum pada masa yang sama.
Apabila bilangan pautan mencapai maksimum, ia akan terus meminta dan memasuki masa menunggu Jika melebihi tempoh maksimum, permintaan akan ditolak.
Bilangan maksimum utas dalam SpringBoot ialah 200. Dalam kebanyakan kes, bilangan maksimum utas 200 tidak mencukupi Secara umumnya, konfigurasi pelayan 1cpu2G ditetapkan kepada 200, dan konfigurasi pelayan daripada 4cpu8G ditetapkan kepada 800. Ia boleh meningkatkan TPS dan mengurangkan RT.
Menala tetapan
Ubah suai aplikasi fail konfigurasi.yml
# Tomcat的 maxConnections、maxThreads、acceptCount三大配置, #分别表示最大连接数,最大线程数、最大的等待数,可以通过application.yml配置文件来改变这个三个值,一个标 #准的示例如下: server.tomcat.uri-encoding: UTF-8 # 思考问题:一台服务器配置多少线程合适? server.tomcat.accept-count: 1000 # 等待队列最多允许1000个请求在队列中等待 server.tomcat.max-connections: 20000 # 最大允许20000个链接被建立 ## 最大工作线程数,默认200, 4核8g内存,线程数经验值800 server.tomcat.threads.max: 800 # 并发处理创建的最大的线程数量 server.tomcat.threads.min-spare: 100 # 最大空闲连接数,防止突发流量
Sahkan bahawa konfigurasi yang diubah suai berkuat kuasa.
Anda boleh menggunakan konfigurasi dalam SpringBoot Tambah
# 暴露所有的监控点 management.endpoints.web.exposure.include: '*' # 定义Actuator访问路径 management.endpoints.web.base-path: /actuator # 开启endpoint 关闭服务功能 management.endpoint.shutdown.enabled: true
pada fail konfigurasi sebentar tadi untuk menyemak sama ada konfigurasi berkuat kuasa: ip:port/actuator
Cari tomcat
2.2 Penalaan model IO rangkaian
Rangkaian io ialah sistem membaca dan menulis io prestasi, Segerak, tidak menyekat), sebenarnya, NIO2 (prestasi ultra tinggi, tak segerak, tidak menyekat) telah dibenamkan secara lalai, tetapi anda perlu memanggil API NIO2, tetapi bahagian ini berdasarkan sistem, AIO (NIO2) bergantung pada sistem pengendalian, seperti Linux menyokong AIO
Malah, AIO ialah pengoptimuman NIO, yang meningkatkan sokongan untuk pemprosesan fail dan ciri sistem fail. Selepas sistem menggunakan AIO, masa tindak balas akan dikurangkan dan stabil.
Menala tetapan
Masukkan terus ke dalam kelas java dalam kod projek untuk menjana kelas konfigurasi java
@Configuration public class TomcatConfig { //自定义SpringBoot嵌入式Tomcat @Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {}; tomcat.addAdditionalTomcatConnectors(http11Nio2Connector()); return tomcat; } //配置连接器nio2 public Connector http11Nio2Connector() { Connector connector=new Connector("org.apache.coyote.http11.Http11Nio2Protocol"); Http11Nio2Protocol nio2Protocol = (Http11Nio2Protocol) connector.getProtocolHandler(); //等待队列最多允许1000个线程在队列中等待 nio2Protocol.setAcceptCount(1000); // 设置最大线程数 nio2Protocol.setMaxThreads(1000); // 设置最大连接数 nio2Protocol.setMaxConnections(20000); //定制化keepalivetimeout,设置30秒内没有请求则服务端自动断开keepalive链接 nio2Protocol.setKeepAliveTimeout(30000); //当客户端发送超过10000个请求则自动断开keepalive链接 nio2Protocol.setMaxKeepAliveRequests(10000); // 请求方式 connector.setScheme("http"); connector.setPort(9003); //自定义的端口,与源端口9001可以共用,知识改了连接器而已 connector.setRedirectPort(8443); return connector; } }
Pastikan konfigurasi berkuat kuasa: ip:9003/ Antara muka panggilan
Nota: Tomcat juga mempunyai mod yang dipanggil apr, yang secara automatik menghidupkan aio Kaedah di atas menggunakan kaedah lain, tetapi secara amnya ini tidak digunakan untuk penalaan. Bahagian ini hanya Buat pemahaman awal, kerana tidak semua sistem menyokong AIO
2.3 Container Optimization Tomcat Upgrade Undertow
Seperti yang kita semua tahu, SpringBoot telah membenamkan Tomcat, tetapi sebenarnya SpringBoot mempunyai tiga jenis daripada pelayan yang dibenamkan: Tomcat (pelayan matang, stabil, berprestasi tinggi), pembangunan apache, Jeti (ringan, pantas dan fleksibel), Undertwo (prestasi tinggi, fleksibiliti tinggi).
Dalam Spring Boot, Tomcat digunakan sebagai pelayan web terbina dalam secara lalai Anda juga boleh mengkonfigurasinya dengan sewajarnya dalam fail konfigurasi dan memilih untuk menggunakan Jetty atau Undertow.
Proses operasi konfigurasi:
Kecualikan tomcat dalam spring-boot-starter-web
<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> </exclusion> </exclusions> </dependency
Import starter bagi bekas lain
<!--导入undertow容器依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>
Konfigurasi
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接 server.undertow.threads.io: 800 # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程 # 默认值是IO线程数*8 server.undertow.threads.worker: 8000 # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理 # 每块buffer的空间大小越小,空间就被利用的越充分,不要设置太大,以免影响其他应用,合适即可 server.undertow.buffer-size: 1024 # 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region # 是否分配的直接内存(NIO直接分配的堆外内存) server.undertow.direct-buffers: true
Atas ialah kandungan terperinci Apakah kaedah untuk penalaan kontena pelayan java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
