Bir VPS kiralama sunucusu kullanarak aynı anda maksimum WEB/AP sunucusu (Apache ve Tomcat) sayısını ölçtüm.


Yayın Tarihi:1 Ocak 2021.



INFOMARTION > Bir VPS kiralama sunucusu kullanarak aynı anda maksimum WEB/AP sunucusu (Apache ve Tomcat) sayısını ölçtüm.

Genel bakış.

WEB/AP sunucularının (Apache ve Tomcat) aynı anda işleyebileceği maksimum vaka sayısını ölçtüm ve sonuçlar hakkında yazmak istiyorum. Hizmet verilebilecek maksimum talep sayısını merak ediyorduk, bu yüzden bir anket yaptık. VPS sunucu özelliklerini seçmek için bunu bir referans olarak kullanın.

Bu kez ölçümler WEB/AP sunucularında (Apache ve Tomcat) gerçekleştirilmiştir, ancak yalnızca WEB (Apache) üzerindeki ölçümler için lütfen aşağıdaki makaleye bakın.

Bir VPS kiralık sunucu kullanarak web sunucusunun (Apache) aynı anda işleyebileceği maksimum vaka sayısını ölçtüm.

İçindekiler

  1. ölçüm
  2. Ölçüm sonuçlarının ayrıntıları
  3. özet

1. ölçüm

1-1. Ölçüm ortamı

Ölçümlerin yapılacağı ortam aşağıda belirtilmiştir.

■Kiralık sunucu bilgileri

CPU2core
memory1GB
SSD50GB

■Sunucu bilgileri

OSCentOS 7.4 64bit
Web sunucusuApache HTTP Server 2.4.41
AP SunucusuApache Tomcat 9.0.27
DB sunucusuPostgreSQL 10.2
JavaOpenJDK 11

1-2. Ölçüm yöntemi

Bunu JMeter kullanarak ölçmek istiyorum. JMeter, Java'da çalışan bir yük ölçüm aracıdır. Araç, çok sayıda talebin aynı anda atılmasına izin verir. JMeter kullanarak eşzamanlı isteklerin sayısını kademeli olarak artırmak ve işlem artık gerçekleştirilemeyene kadar yükü artırmak istiyoruz.

Belirli koşullar şunları içerir.

  • istek aralığı・・・5 saniye.
  • Eşzamanlı talep sayısı・・・10 vaka.(Ölçümler kademeli olarak her biri 10 vaka artmıştır.)
  • Zaman ölçümü・・・60 saniye.

Ölçüm süresi "60 saniye" ve talep aralığı "5 saniye" olduğundan, sisteme tekrar tekrar 12 kez (60÷5) erişmek istiyorsunuz.

1-3. ölçüm sonucu

Sonunda, birçok kişi sunucunun hangi özellikleri ve ne kadarını kaldırabileceği sonucuyla ilgileniyor, bu yüzden önce sonucu belirtmek istiyorum.

CPU:2core
memory:1GB
SSD:50GB
80 adede kadar eşzamanlı talep işlenebilir

Bu ölçümün sonuçları yukarıda belirtilenleri göstermiştir. Yukarıdaki sonuçlar aşağıdaki çıkarımların yapılabileceğini göstermektedir. Sunucu özelliklerini seçerken bunu bir kriter olarak kullanmaya çalışın.

CPU:1core
memory:512MB
SSD:25GB
Aynı anda en fazla 20 talep işlenebilir.
CPU:2core
memory:1GB
SSD:50GB
80 adede kadar eşzamanlı talep işlenebilir
CPU:3core
memory:2GB
SSD:100GB
Aynı anda 200'e kadar talep işlenebilir.

Yaklaşık 20 kullanıcılı bir sistemin "CPU: 1core", "memory: 512MB" ve "SSD: 25GB" ile sorunsuz çalışacağı tespit edilmiştir.

2. Ölçüm sonuçlarının ayrıntıları

Ölçüm sonuçlarını daha önce açıkladık, ancak ne tür sonuçlar açıkladığımızla ilgileniyorsanız, lütfen ileride açıklanacak olan ölçüm sonucu ayrıntılarını da kontrol edin.

2-1. WEB/AP sunucusu (Apache, Tomcat) ölçümleri

İstek, kullanıcının giriş ekranından giriş yaptığı ve giriş yaptıktan sonra liste ekranının görüntülendiği bir senaryoda atılmıştır. Bu arada, ekran, kimlik doğrulama işlevi de dahil olmak üzere Spring çerçevesi kullanılarak oluşturulmuştur.

Ölçümler aşağıdaki sonuçları göstermiştir.

  • 10 eşzamanlı talep için⇒OK
  • 20 eşzamanlı talep için⇒OK
  • 30 eşzamanlı talep için⇒OK
  • 40 eşzamanlı talep için⇒OK
  • 50 eşzamanlı talep için⇒OK
  • 60 eşzamanlı talep için⇒OK
  • 70 eşzamanlı talep için⇒OK
  • 80 eşzamanlı talep için⇒OK
  • 90 eşzamanlı talep için⇒NG

Hata 90. vakada meydana gelmiştir. Nedeni Apache'ye bir bağlantı hatasıydı. Bu sırada sunucunun durumu aşağıdaki gibiydi.

  • CPU kullanımı・・・26%
  • bellek kullanımı・・・100%

Tam bir bellek eksikliği darboğazdı.

Biraz daha meraklı olanlar için Apache Çoklu İşlem Modülü (MPM) yapılandırması aşağıdaki gibidir. MPM basitçe Apache'nin paralel olarak ne kadar işlem yapmasına izin verileceğinin ayarlanması olarak açıklanmaktadır.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

İlgilenilen ayar "MaxRequestWorkers" için "250 "dir. Bu, Apache'nin aynı anda işleyebileceği maksimum vaka sayısı için bir ayardır. '250', bu nedenle 250 vaka maksimum paralel olarak işlenebilir, ancak bellek kullanımına bakıldığında, vaka başına yaklaşık 8 MB bellek kullanılmıştır.

Java 320MB bellek (heap için 248M ve metaspace için 72M) ve Apache 640MB bellek (8M x 80 işlem) kullanıyor gibi görünüyordu ve Apache'nin MPM ayar değeri '250' olmasına rağmen, '80' işlemden daha fazlasını oluşturamıyor gibi görünüyordu.
※Sunucu 1G belleğe sahip, bu nedenle Apache ve Java için toplam bellek 960MB, yani neredeyse üst sınırda.

AP sunucusu (Java tarafı) iyi çalışıyordu, bu nedenle darboğaz WEB sunucusuydu (Apache).

Apache ve Tomcat kurulup çalıştırıldığında, "CPU: 2core, memory: 1GB, SSD: 50GB" özellikleri ile eşzamanlı erişim sayısının "80" sınırı olduğunu gördük.(Java için bellek ayarlarının heap için 248M ve metaspace için 72M olduğu varsayılmaktadır.)

2-2. dikkate almak

Ancak bellek darboğaz olduğu için, bellek değiştirilirse eşzamanlı olarak işlenebilecek işlem sayısı da artacaktır.

【Burada.(memory1GB)】

  • memory:1GB
  • Apache iş parçacığı sayısı:80 vaka.
  • Apache'de iş parçacığı başına bellek tüketimi.:8MB
  • Apache bellek tüketimi:640MB(80 vaka.×8MB)
  • Tomcat bellek tüketimi:320MB(HEAP için 248 milyon.、Metaspace için 72m.)
  • Apache+Tomcat'in bellek tüketimi:960MB

【değişiklikten sonra(memory2GB)】

  • memory:2GB
  • Apache iş parçacığı sayısı:200 vaka
  • Apache'de iş parçacığı başına bellek tüketimi.:8MB
  • Apache bellek tüketimi:1600MB(200 vaka×8MB)
  • Tomcat bellek tüketimi:320MB(HEAP için 248 milyon.、Metaspace için 72m.)
  • Apache+Tomcat'in bellek tüketimi:1920MB

2 GB bellek ile 200 vakayı aynı anda işlemek mümkün olabilir. Bellek 3GB'a çıkarılırsa, daha fazla eşzamanlı işlem yapılabilir gibi görünüyor, ancak Apache'nin MPM'sinin "MaxRequestWorkers (eşzamanlı olarak işlenecek maksimum vaka sayısı)" "250" dir, bu nedenle bellek daha da artırılırsa burada da ayarlama yapılması gerekecektir. Java bellek ayarlaması da gerekebilir. Tersine, bellek yarıya indirilirse, aşağıdaki gibi olacaktır.

【değişiklikten sonra(memory512GB)】

  • memory:512GB
  • Apache iş parçacığı sayısı:20 vaka
  • Apache'de iş parçacığı başına bellek tüketimi.:8MB
  • Apache bellek tüketimi:160MB(20 vaka×8MB)
  • Tomcat bellek tüketimi:320MB(HEAP için 248 milyon.、Metaspace için 72m.)
  • Apache+Tomcat'in bellek tüketimi:480MB

3. özet

WEB/AP sunucularının (Apache ve Tomcat) aynı anda işleyebileceği maksimum vaka sayısının ölçülmesinin sonuçları açıklanmıştır. Yaklaşık 20 kullanıcılı bir sistemin "CPU: 1core", "memory: 512MB" ve "SSD: 25GB" ile sorunsuz çalışacağı tespit edilmiştir.

Anket, başka hiçbir yazılımın marjinal performansta çalışmadığı varsayımına dayanmaktadır. Marjinal bir değer olduğu için biraz esnek bir spesifikasyon seçilmesi tavsiye edilir.

Sonuna kadar izlediğiniz için teşekkür ederiz.