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


Tanggal Publikasi:31 Desember 2020.



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

Ikhtisar.

Saya telah mengukur jumlah maksimum kasus yang dapat diproses oleh server web (Apache) 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 hanya dilakukan pada WEB (Apache), tetapi silakan merujuk ke artikel di bawah ini untuk pengukuran pada server WEB/AP (Apache dan Tomcat).

Saya mengukur jumlah maksimum server WEB/AP (Apache dan Tomcat) yang dapat ditangani pada saat yang sama 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

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 ditangani lagi.

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 tentang spesifikasi apa yang dapat ditangani server dan berapa banyak yang dapat ditangani, jadi saya ingin menyatakan kesimpulannya terlebih dahulu.

CPU:2core
memory:1GB
SSD:50GB
Hingga 120 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 60 permintaan simultan dapat diproses.
CPU:2core
memory:1GB
SSD:50GB
Hingga 120 permintaan simultan dapat diproses.
CPU:3core
memory:2GB
SSD:100GB
Hingga 240 permintaan simultan dapat diproses.

Bahkan dengan spesifikasi "CPU: 1core", "memory: 512MB" dan "SSD: 25GB", ditemukan bahwa sistem yang terdiri atas sekitar 60 orang bisa beroperasi tanpa masalah.

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 (Apache)

Permintaan berulang-ulang dilemparkan terhadap halaman yang dibuat dalam HTML. Ini adalah halaman sederhana tanpa pemrosesan PHP atau kerumitan JavaScript.

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⇒OK
  • Untuk 100 permintaan simultan⇒OK
  • 110 permintaan simultan⇒OK
  • Untuk 120 permintaan simultan⇒OK
  • Untuk 130 permintaan simultan⇒NG

Kesalahan terjadi pada kasus ke-130. Penyebabnya adalah kesalahan koneksi ke Apache. Keadaan server pada saat ini adalah sebagai berikut.

  • Pemanfaatan CPU・・・26%
  • tingkat penggunaan 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.

Tampaknya menggunakan memori 960 MB (8M x 120 proses) dan nilai pengaturannya adalah '250', tetapi tampaknya tidak mungkin untuk membuat lebih dari '120' proses.
※Memori server hampir mencapai batas 1G.

Ketika benar-benar mengoperasikan server, jika PHP dan Java juga disertakan, batasnya sekitar 100 kasus, dan jika ada ruang, 80 kasus dapat diproses secara bersamaan secara paralel.

Ketika hanya Apache yang diinstal dan berjalan, dengan spesifikasi "CPU: 2core, memori: 1GB, SSD: 50GB", jumlah akses simultan "120" ditemukan sebagai batasnya.

2-2. pertimbangan

Dari sini menjadi pertimbangan, tetapi karena memori adalah bottleneck, jika memori diubah, jumlah proses yang dapat diproses secara bersamaan akan meningkat.

【Hadir.(memory1GB)】

  • memory:1GB
  • Jumlah utas Apache:120 kasus
  • Konsumsi memori per thread di Apache.:8MB
  • Konsumsi memori Apache:960MB(120 kasus×8MB)

【setelah perubahan(memory2GB)】

  • memory:2GB
  • Jumlah utas Apache:240 kasus.
  • Konsumsi memori per thread di Apache.:8MB
  • Konsumsi memori Apache:1920MB(240 kasus.×8MB)

Jika memori ditingkatkan ke 2 GB, maka dimungkinkan untuk melipatgandakan jumlah kasus menjadi sekitar 240 secara bersamaan. 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. Sebaliknya, jika memori dibelah dua, maka akan menjadi sebagai berikut.

【setelah perubahan(memory512GB)】

  • memory:512GB
  • Jumlah utas Apache:60 kasus.
  • Konsumsi memori per thread di Apache.:8MB
  • Konsumsi memori Apache:480MB(60 kasus.×8MB)

3. ringkasan

Kami telah mengukur jumlah maksimum kasus yang dapat diproses oleh server web (Apache) pada waktu yang sama. Ditemukan bahwa sistem yang terdiri dari sekitar 60 orang bisa dioperasikan 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.