Birkaç CPU/CPU-Cores kullanarak sunucu uygulamalarına paralel olarak birden fazla istemci bağlantısını (ve isteklerini) işleme olanağı verir (daha yüksek performans elde etmek).
Çok çekirdekli işlemciler dünyasında, bu konu kapsamlı bir araştırmaya konu olmuştur.
Paralelizmi ele almak için 3 yol vardır (çok çekirdekli CPU'lar gibi):
-
birkaç işlemi kullanarak;
-
tek bir işlemde birkaç iş parçacığı kullanarak;
-
birkaç işlemde birkaç iş parçacığı kullanarak.
Apache birkaç modeli araştırdı ve Nginx 1 numaralı seçeneği kullanıyor.
Hangi modelin daha iyi performans göstermesi genellikle bir uygulama meselesi olarak kabul edilir (en azından işlemlerin çok hafif olduğu Unix altında) ve böylece ipliklerle rekabet edebilirler.
Şimdi, benim tahminime dön (okuma testlerine dayanarak burada ), doğru (çok parçalı) Apache mimarisinin, çok çekirdekli CPU'larda Nginx'ten daha iyi ölçeklenmesi gerektiğidir.
Paradoksal olarak, Apache'nin Nginx'ten daha hızlı olduğu anlamına gelmez: sadece 1, 2, 3, ... 16 Çekirdek, Apache'nin Nginx'ten daha iyi ölçekleneceği anlamına gelir. WHILE Nginx daha fazla müşteri isteğini işleyebilir:
-
Performansın hızlı olması (tek çekirdekli bir CPU'da saniyede daha fazla istek işlenmesi)
-
Ölçeklenebilirlik, CPU Çekirdeği sayısı arttıkça saniye başına daha fazla istek işleme kabiliyetidir (ideal, doğrusal olarak ölçeklendirilir: CPU Çekirdeklerinin sayısını iki katına çıkardığınızda saniyedeki istekleri iki katına çıkarmaktır).
Ölçeklendirilmeyen sunucunun hızından daha düşük olan sunucu başına düşen istek sayısı sayısı ölçeklendirilemiyorsa, performans olmadan ölçeklendirme anlamsızdır (sunucu gerçekten GERÇEKTEN ölçeklendirilirse MANY Çekirdeklerinin gerçekleştirmesi gereken bir nokta vardır) ölçeklemeyen sunucudan daha iyi).
Ölçeklendirme olmadan gerçekleştirme, bir sunucunun çok çekirdekli CPU'lardan yararlanamamasıdır.
Gelecek, her koşulda (sadece birkaç Çekirdek veya çok sayıda Çekirdek) en iyi performansı sağlamak için her ikisini de doğru yapan sunucu uygulamalarından kesinlikle yapılacaktır.