Jadual Kandungan
1. Mengapa penalaan prestasi projek perlu
2. Penalaan prestasi bekas servis
2.1 Penalaan Tomcat potong dalam SpringBoot: mengoptimumkan bilangan maksimum utas
Arahan penalaan:
Menala tetapan
2.2 Penalaan model IO rangkaian
2.3 Container Optimization Tomcat Upgrade Undertow
Proses operasi konfigurasi:
Rumah Java javaTutorial Apakah kaedah untuk penalaan kontena pelayan java?

Apakah kaedah untuk penalaan kontena pelayan java?

May 11, 2023 pm 11:37 PM
java pelayan

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 # 最大空闲连接数,防止突发流量
Salin selepas log masuk

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
Salin selepas log masuk
  • 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;
        }
    }
Salin selepas log masuk
  • 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
Salin selepas log masuk

Import starter bagi bekas lain

<!--导入undertow容器依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
Salin selepas log masuk
  • 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
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah kaedah untuk penalaan kontena pelayan java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

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

Penjana Nombor Rawak di Jawa Penjana Nombor Rawak di Jawa Aug 30, 2024 pm 04:27 PM

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

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

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

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

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

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

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

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

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

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

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.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

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

See all articles