Tomcat selalunya merupakan persekitaran pembangunan lalai untuk pengamal JavaWeb, tetapi konfigurasi lalai Tomcat sebagai persekitaran pengeluaran, terutamanya konfigurasi memori dan benang, secara lalai sangat rendah dan boleh menjadi kesesakan prestasi dengan mudah masih mempunyai banyak ciri Bilik untuk penambahbaikan Perkara berikut memperkenalkan pengoptimuman Tomcat, yang boleh dibahagikan kepada memori, benang dan IO.
Tomcat selalunya merupakan persekitaran pembangunan lalai untuk pengamal JavaWeb, tetapi konfigurasi lalai Tomcat sebagai persekitaran pengeluaran, terutamanya konfigurasi memori dan benang, adalah sangat rendah secara lalai dan boleh menjadi kesesakan prestasi dengan mudah.
Nasib baik, Tomcat masih mempunyai banyak ruang untuk penambahbaikan Perkara berikut akan memperkenalkan pengoptimuman Tomcat, yang boleh dibahagikan kepada ingatan, benang dan IO.
catalina.bat di bawah Windows
catalina.sh di bawah Linux seperti:
JAVA_OPTS='-Xms256m -Xmx512m'
-Xms
-Xmx
maxThreads="X" bermaksud memproses sehingga sambungan X pada masa yang sama
minSpareThreads="X" Mulakan sambungan X
maxSpareThreads="X" bermakna jika terdapat paling banyak benang X, sekali lebih daripada X, benang yang tidak diperlukan lagi akan ditutup
acceptCount="X" Apabila bilangan orang yang disambungkan pada masa yang sama mencapai maxThreads, anda masih boleh beratur, dan saiz baris gilir ialah X. Jika melebihi X, ia tidak akan diproses
1: IO menyekat segerak (JAVA BIO) Penyegerakan dan penyekatan, mod pelaksanaan pelayan adalah satu sambungan satu utas (menakutkan untuk memikirkannya, benang adalah sumber yang sangat berharga), sudah tentu ia boleh diperbaiki melalui mekanisme kumpulan benang.
2: Java NIO: Ia dibahagikan kepada IO yang tidak menyekat, menyekat IO dan Bio
3: Asynchronous non-blocking IO (Java NIO2 juga dipanggil AIO. Perbezaan utama dengan NIO ialah perbezaan asas sistem operasi Ia boleh dibandingkan dengan penghantaran ekspres, anda perlu pergi ke laman web rasmi untuk menyemak sama ada penghantaran ekspres telah dihantar Apabila anda tiba (mungkin beberapa kali), anda boleh mengambil ekspres itu sendiri; AIO bermakna kurier akan menghantar barang ke pintu anda (anda tidak perlu membayar perhatian kepada kemajuan ekspres).Kaedah BIO sesuai untuk seni bina dengan bilangan sambungan yang agak kecil dan tetap Kaedah ini mempunyai keperluan yang agak tinggi untuk sumber pelayan, dan concurrency adalah terhad kepada aplikasi sebelum JDK1.4, tetapi program ini adalah intuitif , ringkas dan mudah difahami.
Kaedah NIO sesuai untuk seni bina dengan bilangan sambungan yang banyak dan sambungan yang agak pendek (operasi ringan), seperti pelayan sembang terhad kepada aplikasi dan pengaturcaraan mula menyokongnya.
Kaedah AIO digunakan dalam seni bina dengan bilangan sambungan yang banyak dan sambungan yang agak panjang (operasi berat), seperti pelayan album foto Ia memanggil OS sepenuhnya untuk mengambil bahagian dalam operasi serentak Pengaturcaraan agak rumit, dan JDK7 mula melakukannya sokong la.
Dalam server.xml
Realisasikan penukaran IO untuk Tomcat.
APR是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (http://apr.apache.org/).
Dalam persekitaran pengeluaran, terutamanya apabila menggunakan Tomcat secara langsung sebagai pelayan WEB, Tomcat Native harus digunakan untuk meningkatkan prestasinya Tanpa APR, pada dasarnya 300 utas akan penuh tidak lama lagi, dan permintaan akan datang perlu menunggu. bilangan utas serentak telah menurun dengan ketara, daripada 300 asal kepada hanya beberapa dozen, dan permintaan baharu akan masuk tanpa disekat.
Apabila diuji dalam persekitaran LAN, walaupun 400 permintaan serentak telah diproses/dihantarkan dalam sekelip mata Namun, dalam persekitaran Internet sebenar, masa pemprosesan halaman hanya menyumbang kurang daripada 0.1%, dan kebanyakan masa digunakan untuk penghantaran halaman. . Jika APR tidak digunakan, satu utas hanya boleh memproses satu pengguna pada satu masa, yang pasti akan menyebabkan penyekatan. Oleh itu, sangat perlu menggunakan apr dalam persekitaran pengeluaran.
Pasang Apache Tomcat Native Library dan sokongan apr (http://tomcat.apache.org/native-doc/) apabila dimulakan secara langsung. Untuk kaedah pemasangan tertentu, sila rujuk blog dan artikel lain masalah kod dan pengoptimuman Tomcat Pada tahap ini, kebanyakan keperluan prestasi boleh dipenuhi.
最后一句话"再牛B的服务器,也顶不住一个傻B的代码".优化的前提条件是良好的代码质量和设计.
Atas ialah kandungan terperinci Analisis N cara untuk mengoptimumkan prestasi Tomcat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!