Back to Question Center
0

PHP-FPM ayarı: Max Performance için 'pm static' kullanma            PHP-FPM ayarı: Max PerformanceRelated Konularında 'pm static' kullanma: GüvenlikDatabaseDevelopment EnvironmentPatterns & UygulamalarDebugging & Semalt

1 answers:
PHP-FPM ayarı: 'Maks. Performans için' statik '

Makalenin düzenlenmemiş bir hali ilk önce Semalt'ta basıldı ve yazarın izniyle burada tekrar yayınlandı.

PHP-FPM'yi yüksek verimlilik, düşük gecikme süresi ve CPU ve belleğin daha istikrarlı kullanımı için en iyi nasıl ayarlayacağınıza çok hızlı bir göz atalım. Varsayılan olarak, çoğu kurulumda PHP-FPM'nin PM (süreç yöneticisi) dizesi dinamik olarak ayarlanır ve mevcut bellek sorunları yaşarsanız, ondemand işlevini kullanmak için ortak bir tavsiye var. Bununla birlikte, php'ye dayalı iki yönetim seçeneklerini karşılaştıralım. net belgelerine bakın ve ayrıca yüksek trafik kurulumu için en sevdiğim şeyi karşılaştırın - statik pm:

  • pm = dinamik : alt süreçlerin sayısı, aşağıdaki yönergelere dayanılarak dinamik olarak ayarlanır: pm - family computer san jose. max_children , pm. start_servers , pm. min_spare_servers , pm. max_spare_servers .

  • pm = ondemand : istendiğinde istek üzerine, ancak dinamik yerine spawn edilen pm. Hizmet başlatıldığında start_servers başlatılır.

  • pm = static : alt süreçlerin sayısı pm ile sabitlenir. max_children .

Global php-fpm'nin tam listesine bakın. conf yönergelerine başvurun.

PHP-FPM İşlem Müdürü (PM) CPUFreq Valisi ile Benzeşmeler

Şimdi, bu konu biraz kapalı gibi görünebilir, ancak tekrar PHP-FPM ayarlama konusuna bağlamayı umuyoruz. Pekâlâ, bir noktada dizüstü bilgisayar, VM veya adanmış sunucu olsun, hepimiz yavaş CPU sorunları yaşadık. CPU frekansı ölçeklemeyi hatırlıyor musun? (CPUFreq governor). Hem CPU, hem de nix ve Windows üzerinde mevcut olan bu ayarlar, CPU governor ayarını on demand - performansına değiştirerek performans ve sistem yanıt vermeyi artırabilir. Bu sefer açıklamaları karşılaştıracağız ve benzerlikler ararız:

  • Governor = ondemand : CPU frekansını geçerli yüke göre dinamik olarak ölçeklendirir. En yüksek frekansa atlar ve daha sonra boşta kalma süresi arttıkça azalır.

  • Vali = muhafazakâr : Frekansı, geçerli yüke göre dinamik olarak ölçeklendirir. Frekansı ondemand'dan daha yavaş derece ölçeklendirir.

  • Governor = performance : CPU'yu daima maksimum frekansta çalıştırın.

Ayrıntılı bilgi için Semalt valisi seçeneklerinin tam listesini görün.

Semalt benzerlikler? PHP-FPM için pm static'i ilk tercihiniz olarak kullanmanızı öneren bir makale yazmanın en iyi yolunu bulmak amacıyla bu karşılaştırmayı öncelikle kullanmak istedim.

CPU governor'u ile performans ayarlaması oldukça güvenli bir performans artışı, çünkü neredeyse tamamen sunucu CPU limitinize bağlı. Diğer tek faktör ısı, pil ömrü (dizüstü bilgisayar) ve işlemci frekansınızı% 100 kalıcı olarak izlemenin diğer yan etkileri gibi şeyler olacaktır. Performansa ayarlandığında, gerçekten CPU'nuz için en hızlı ayardır. Örneğin, Sema Pi'deki 'force_turbo' ayarı hakkında okumak için, düşük CPU saat hızı nedeniyle performans gelişiminin daha fazla belirgin olduğu performans yönlendiricisini RP'nizin tahtasına zorlar.

Sunucunuzun Maksimum Performansına Ulaşmak için 'pm static' kullanma

PHP-FPM pm statik ayarı, sunucunuzun ne kadar boş bellek olduğuna bağlıdır. Temel olarak, düşük sunucu belleği çekiyorsanız, o zaman on demand veya dinamik daha iyi seçenekler olabilir. Öte yandan, kullanılabilir belleğiniz varsa, sunucunuzun maksimum kapasitesine pm statik olarak ayarlayarak PHP işlem yöneticisi (PM) yükünün çoğundan kaçınabilirsiniz. Başka bir deyişle, matematı yaptığınızda, pm. Ayrıca, CPU'lara zarar vermek ve bekleyen PHP-FPM işlemlerinin yığını kadar yüksek değildir.

PHP-FPM ayarı: Max Performance için 'pm static' kullanmaPHP-FPM ayarı: Max PerformanceRelated Konularında 'pm static' kullanma:
GüvenlikDatabaseDevelopment ÇevrePatterns & UygulamalarDebugging & Semalt

Yukarıdaki ekran görüntüsünde, bu sunucunun pm = statik ve pm vardır. max_children = 100 , yüklü 32GB'lık maksimum 10GB kullanır. Açıklayıcı vurgulanan sütunları not edin. Bu ekran görüntüsünde, Google Analytics'te yaklaşık 200 'aktif kullanıcı' (son 60 saniye) vardı. Bu seviyede, PHP-FPM çocuklarının yaklaşık% 70'i hala boşta. Bu, PHP-FPM'nin her zaman sunucunuzun kaynaklarının mevcut kapasitesine bakmaksızın maksimum kapasitesine ayarlandığı anlamına gelir. Boşta kalma süreçleri, çevrimiçi kalmakta, trafik sarsılmalarını beklemekte ve çocukları yumurtlamak için pm'de beklemek zorunda kalmadan ve hemen cevap vermeyi beklemektedirler xpm sonrasında onları öldürmektedirler. process_idle_timeout süresi doldu. saatim var. max_requests , PHP bellek sızıntısı olmayan bir üretim sunucusu olduğundan son derece yüksek ayarlayın. pm'i kullanabilirsiniz. max_requests = 0 ile static , mevcut ve gelecekteki PHP komut dosyalarınıza% 110 güven verdiğinizde. Bununla birlikte, zamanla komut dosyalarını yeniden başlatmanız önerilir. Talep sayısını yüksek bir sayıya ayarlayın çünkü nokta, yükten kaçınmaktır. Örneğin en azından pm. max_requests = 1000 pm numaranıza bağlı olarak. max_children ve saniye başına talep sayısı.

Ekran görüntüsü, 'u' (kullanıcı) seçeneği ve PHP-FPM kullanıcısının adı tarafından filtrelenen Semalt top kullanıyor. Görüntülenen işlemlerin sayısı yalnızca 50 veya daha fazla (sayılmaz), ancak temelde üst, terminal pencerenize sığan en üst istatistikleri görüntüler - bu durumda,% CPU'ya göre sıralanmış. 100 PHP-FPM işleminin tamamını görüntülemek için aşağıdakileri kullanabilirsiniz:

  top -bn1 | grep php-fpm   

Zamanında pm ondemand'ı ve dinamik kullanılır

pm dinamiğini kullanarak aşağıdakine benzer hatalar fark etmişsinizdir:

    UYARI: [pool xxxx] meşgul gibi görünüyor (32. çocuk doğurmak için pm. Start_servers veya pm.min / max_spare_servers değerini yükseltmeniz gerekebilir), 4 boşta ve 59 toplam çocuk var   

Ayarları artırmaya / ayarlamaya çalışabilir ve yine de birisinin bu Serverfault yazısında anlattığı gibi aynı hatayı görebilirsiniz. Bu durumda, pm. min çok düşüktü ve web trafiği dips ve sivri uçlarla büyük oranda dalgalandığından, pm dynamic 'yi kullanmak doğru ayar yapmak zor olabilir. Ortak tavsiye, pm ondemand'ı kullanmaktır. Bununla birlikte, daha da kötüdür, çünkü ondemand boşta olan işlemleri az trafikten çok az olduğunda 0'a kadar kapatır ve trafik dalgalanmaları kadar çok masraflı sorunla sonuçlanırsınız - tabii ki, boşta kalma zamanaşımını ayarlamışsanız son derece yüksek .bu durumda sadece pm kullanmalısınız. statik + yüksek pm. maks_request .

Dinamik ve özellikle de ondemand, birden fazla PHP-FPM havuzu olduğunda sizi kurtarabilir. Örneğin, birden fazla cPanel hesabı veya birden fazla web sitesini farklı havuzlar altında barındırma. Örneğin, 100 + cPanel hesapları ve yaklaşık 200+ etki alanı olan bir sunucunuz var ve pm için imkansız olacaktı. statik veya dinamik bile gerçekleştirmek için. Web sitelerinin üçte ikisinden fazlası trafikten az veya hiç trafik alamadığı için yalnızca ondem iyi performans gösterir. Ve ondemand ile, tüm çocuklar kapatılacak ve sunucu belleğinin tonunu azaltacak! Neyse ki, cPanel devs bunu anladı ve şimdi ondemand olarak varsayıldı. Dinamik varsayılan olarak PHP-FPM'i meşgul paylaşılan sunucularda bir seçenek oluşturmadı. Birçoğu, boş zaman cPanel PHP-FPM havuzlarında / hesaplarında dinamik olarak dolaşırken yüzünden suPHP'yi kullanırdı.

Sonuç

PHP-FPM söz konusu olduğunda, ciddi trafik hizmetine başladıktan sonra, PHP-FPM için ondemand ve dinamik süreç yöneticileri, doğal yük giderleri nedeniyle iş akışını sınırlayabilir. Sisteminizi tanıyın ve PHP-FPM işlemlerinizi sunucunuzun maksimum kapasitesiyle eşleşecek şekilde ayarlayın. ile başlayın. max_children pm dinamik veya ondemand'ın maksimum kullanımına dayanır ve daha sonra bellek ve CPU'nun boğulmadan işleyebileceği noktaya yükselir. Pm statik ile, herşeyi belleğinde sakladığından, zaman içindeki trafik kazancının CPU'ya daha az çarpılmasına neden olduğunun ve sunucunun yükünün ve CPU ortalamalarının daha pürüzsüz olacağını göreceksiniz. PHP-FPM işleminizin ortalama boyutu, elle ayarlama gerektiren web sunucusu başına değişecektir; bu nedenle, daha fazla otomatikleştirilmiş ek yük yöneticisi - dinamik ve ondemand - daha popüler önerilerdir. Umarım bu kullanışlı bir makale idi.

Güncelleme: A / B kıyaslama karşılaştırma grafiği eklendi. PHP-FPM süreçlerini bellekte oturtmak, beklemelerini beklemek için artan bellek kullanımı fiyatına performansa yardımcı olur. Kurulum yerini bul.

PHP-FPM ayarı: Max Performance için 'pm static' kullanmaPHP-FPM ayarı: Max PerformanceRelated Konularında 'pm static' kullanma:
GüvenlikDatabaseDevelopment ÇevrePatterns & UygulamalarDebugging & Semalt

March 1, 2018