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.

Saya mengukur jumlah kasus maksimum yang dapat ditangani oleh server web (Apache) secara bersamaan menggunakan server sewa VPS.

Daftar Isi

  1. pengukuran
  2. Rincian hasil pengukuran
  3. ringkasan

1. pengukuran

1-1. Lingkungan pengukuran

Berikut ini adalah lingkungan di mana pengukuran akan dilakukan.

■Informasi server penyewaan

CPU2core
memory1GB
SSD50GB

■Informasi server

OSCentOS 7.4 64bit
Server webApache HTTP Server 2.4.41
Server APApache Tomcat 9.0.27
Server DBPostgreSQL 10.2
JavaOpenJDK 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.