Saya mengukur jumlah maksimum server WEB/AP (Apache dan Tomcat) yang dapat ditangani pada saat yang sama menggunakan server sewa VPS.
Tanggal Publikasi:1 Januari 2021.
INFOMARTION > Saya mengukur jumlah maksimum server WEB/AP (Apache dan Tomcat) yang dapat ditangani pada saat yang sama menggunakan server sewa VPS.
Ikhtisar.
Saya telah mengukur jumlah maksimum kasus yang dapat diproses oleh server WEB/AP (Apache dan Tomcat) pada saat yang sama, dan saya ingin menulis tentang hasilnya. Kami penasaran tentang jumlah maksimum permintaan yang bisa dilayani, jadi kami melakukan survei. Gunakan ini sebagai referensi untuk memilih spesifikasi server VPS.
Kali ini, pengukuran dilakukan pada server WEB/AP (Apache dan Tomcat), tetapi silakan merujuk ke artikel di bawah ini untuk pengukuran pada WEB (Apache) saja.
Daftar Isi
1. pengukuran
1-1. Lingkungan pengukuran
Berikut ini adalah lingkungan di mana pengukuran akan dilakukan.
■Informasi server penyewaan
CPU | 2core |
---|---|
memory | 1GB |
SSD | 50GB |
■Informasi server
OS | CentOS 7.4 64bit |
---|---|
Server web | Apache HTTP Server 2.4.41 |
Server AP | Apache Tomcat 9.0.27 |
Server DB | PostgreSQL 10.2 |
Java | OpenJDK 11 |
1-2. Metode pengukuran
Saya ingin mengukur ini menggunakan JMeter. JMeter adalah alat pengukuran beban yang berjalan di Java. Alat ini memungkinkan sejumlah besar permintaan dilemparkan pada waktu yang sama. Kami ingin secara bertahap meningkatkan jumlah permintaan simultan menggunakan JMeter dan meningkatkan beban sampai pemrosesan tidak dapat lagi ditangani.
Kondisi spesifik meliputi.
- interval permintaan・・・5 detik.
- Jumlah permintaan simultan・・・10 kasus.(Pengukuran secara bertahap meningkat masing-masing 10 kasus.)
- Mengukur waktu・・・60 detik.
Waktu pengukuran adalah "60 detik" dan interval permintaan "5 detik", jadi Anda ingin mengakses sistem sebanyak 12 kali (60÷5) berulang kali.
1-3. hasil pengukuran
Pada akhirnya, banyak orang yang tertarik pada kesimpulan spesifikasi apa yang bisa ditangani server dan berapa banyak yang bisa ditangani, jadi saya ingin menyatakan kesimpulannya terlebih dahulu.
CPU:2core memory:1GB SSD:50GB | Hingga 80 permintaan simultan dapat diproses |
---|
Hasil pengukuran ini menunjukkan hal di atas. Hasil di atas menunjukkan bahwa hal-hal berikut ini dapat disimpulkan. Coba gunakan ini sebagai kriteria ketika memilih spesifikasi server.
CPU:1core memory:512MB SSD:25GB | Hingga 20 permintaan simultan dapat diproses. |
---|---|
CPU:2core memory:1GB SSD:50GB | Hingga 80 permintaan simultan dapat diproses |
CPU:3core memory:2GB SSD:100GB | Hingga 200 permintaan simultan dapat diproses. |
Ditemukan bahwa sistem dengan ukuran sekitar 20 pengguna akan beroperasi tanpa masalah dengan "CPU: 1core", "memory: 512MB" dan "SSD: 25GB".
2. Rincian hasil pengukuran
Kami telah menjelaskan hasil pengukuran sebelumnya, tetapi jika Anda tertarik dengan hasil seperti apa yang telah kami jelaskan, harap periksa juga detail hasil pengukuran yang akan dijelaskan di waktu mendatang.
2-1. Pengukuran server WEB/AP (Apache, Tomcat)
Permintaan itu dilemparkan dalam skenario di mana pengguna masuk dari layar login dan setelah masuk, layar daftar ditampilkan. Kebetulan, layar dibangun menggunakan kerangka kerja Spring, termasuk fungsi otentikasi.
Pengukuran menunjukkan hasil sebagai berikut.
- Untuk 10 permintaan simultan⇒OK
- Untuk 20 permintaan simultan⇒OK
- Untuk 30 permintaan simultan⇒OK
- Untuk 40 permintaan simultan⇒OK
- Untuk 50 permintaan simultan⇒OK
- Untuk 60 permintaan simultan⇒OK
- Untuk 70 permintaan simultan⇒OK
- Untuk 80 permintaan simultan⇒OK
- Untuk 90 permintaan simultan⇒NG
Kesalahan terjadi pada kasus ke-90. Penyebabnya adalah kesalahan koneksi ke Apache. Keadaan server pada saat ini adalah sebagai berikut.
- Pemanfaatan CPU・・・26%
- pemanfaatan memori・・・100%
Kurangnya memori adalah hambatannya.
Untuk yang sedikit lebih culun, konfigurasi Apache Multi-Processing Module (MPM) adalah sebagai berikut. MPM secara sederhana dijelaskan sebagai pengaturan seberapa banyak Apache diizinkan untuk memproses secara paralel.
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
Pengaturan yang menarik adalah "250" untuk "MaxRequestWorkers". Ini adalah pengaturan untuk jumlah maksimum kasus yang bisa diproses Apache pada waktu yang sama. '250', sehingga 250 kasus dapat diproses secara paralel maksimum, tetapi melihat penggunaan memori, sekitar 8 MB memori digunakan per kasus.
Java tampaknya menggunakan 320MB memori (248M untuk heap dan 72M untuk metaspace) dan Apache 640MB memori (8M x 80 proses), dan meskipun nilai pengaturan MPM Apache adalah '250', tampaknya tidak dapat membuat lebih dari '80' proses.
※Server memiliki memori 1G, sehingga total memori untuk Apache dan Java adalah 960MB, yang hampir mencapai batas atas.
Server AP (sisi Java) bekerja dengan baik, jadi hambatannya adalah server WEB (Apache).
Ketika Apache dan Tomcat terinstal dan berjalan, kami menemukan bahwa dengan spesifikasi "CPU: 2core, memori: 1GB, SSD: 50GB", jumlah akses simultan "80" adalah batasnya.(Asumsinya adalah bahwa pengaturan memori untuk Java adalah 248M untuk heap dan 72M untuk metaspace.)
2-2. pertimbangan
Dari sini menjadi pertimbangan, tetapi karena memori adalah bottleneck, jika memori diubah, jumlah proses yang dapat diproses secara bersamaan juga akan meningkat.
【Hadir.(memory1GB)】
- memory:1GB
- Jumlah utas Apache:80 kasus.
- Konsumsi memori per thread di Apache.:8MB
- Konsumsi memori Apache:640MB(80 kasus.×8MB)
- Konsumsi memori Tomcat:320MB(248 juta untuk HEAP.、72m untuk metaspace.)
- Konsumsi memori Apache+Tomcat:960MB
【setelah perubahan(memory2GB)】
- memory:2GB
- Jumlah utas Apache:200 kasus
- Konsumsi memori per thread di Apache.:8MB
- Konsumsi memori Apache:1600MB(200 kasus×8MB)
- Konsumsi memori Tomcat:320MB(248 juta untuk HEAP.、72m untuk metaspace.)
- Konsumsi memori Apache+Tomcat:1920MB
Dengan memori 2 GB, dimungkinkan untuk memproses 200 kasus secara simultan. Jika memori ditingkatkan menjadi 3GB, tampaknya pemrosesan yang lebih bersamaan dapat dilakukan, tetapi "MaxRequestWorkers (jumlah maksimum kasus yang akan diproses secara bersamaan)" dari MPM Apache adalah "250", jadi penyetelan di sini juga akan diperlukan jika memori ditingkatkan lebih lanjut. Penyetelan memori Java mungkin juga diperlukan. Sebaliknya, jika memori dibelah dua, maka akan menjadi sebagai berikut.
【setelah perubahan(memory512GB)】
- memory:512GB
- Jumlah utas Apache:20 kasus
- Konsumsi memori per thread di Apache.:8MB
- Konsumsi memori Apache:160MB(20 kasus×8MB)
- Konsumsi memori Tomcat:320MB(248 juta untuk HEAP.、72m untuk metaspace.)
- Konsumsi memori Apache+Tomcat:480MB
3. ringkasan
Hasil pengukuran jumlah maksimum kasus yang dapat diproses oleh server WEB/AP (Apache dan Tomcat) pada waktu yang sama dijelaskan. Ditemukan bahwa sistem dengan ukuran sekitar 20 pengguna akan beroperasi tanpa masalah dengan "CPU: 1core", "memory: 512MB" dan "SSD: 25GB".
Survei ini didasarkan pada asumsi bahwa tidak ada perangkat lunak lain yang berjalan pada performa marjinal. Direkomendasikan untuk memilih spesifikasi dengan sedikit kelonggaran, karena ini adalah nilai marjinal.
Terima kasih telah menonton sampai akhir.