Apache MPM'ler - İşçi ve Prefork


13

VPS'ime yükleyebileceğim en iyi Apache MPM'nin hangisi olduğunu anlamaya çalışıyorum. Bazı ölçütler gördüm ve MPM İşçi Prefork'dan daha iyi performans gösteriyor gibi görünüyor, ancak bir nedenden dolayı herkes PHP kurulumları için İşçi Üzerinden Prefork'u tavsiye ediyor gibi görünüyor.

Bunun nedeni, bazı PHP işlevlerinin iş parçacığı için güvenli olmamasıdır? Sadece setlocale()akla geliyor, ama her durumda aynı yerel ayarı kullanacağım, bu yüzden bunun bir sorun olacağını düşünmüyorum. VPS'imin hafızası az ve çalışan MPM'nin ihtiyaçlarım için daha iyi bir eşleşme olacağını hissediyorum, ancak emin değilim.

Birisi bu konuda kararımı vermeme yardımcı olabilir mi? Teşekkürler!


PS: Ayrıca nginx ve lighttpd'yi de inceledim. nginx harika görünüyor ama kaynaktan derleme önlemek için çalışıyorum ve hala oldukça php-fpm ne için anlamıyorum. Lighttpd ile ilgili olarak - PHP / FCGI'yi kurmak inanılmazdı, ancak bellek sızıntıları olduğunu duydum. Bu hala doğru mu?


2
Sorun şu ki, çekirdek PHP artık iş parçacığı için güvenli olsa da, uzantılar söz konusu olduğunda, tüm bahisler kapalıdır.
mattdm

Yanıtlar:


12

Apache + mod_php kullanırken prefork kullanmalısınız. SSS, bunun nedenini açıkça ortaya koyuyor:

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

Apache2'yi neden bir üretim ortamında dişli MPM ile kullanmamalıyım?

PHP yapıştırıcıdır. Düzinelerce 3. taraf kütüphaneyi birbirine yapıştırarak ve bunların sezgisel ve öğrenmesi kolay bir dil arayüzü aracılığıyla tutarlı bir varlık olarak görünmesini sağlayarak harika web uygulamaları oluşturmak için kullanılan tutkaldır. PHP'nin esnekliği ve gücü, temeldeki platformun kararlılığına ve sağlamlığına dayanır. Birlikte yapıştırmak için çalışan bir işletim sistemine, çalışan bir web sunucusuna ve çalışan 3. taraf kütüphanelere ihtiyaç duyar. Bunlardan herhangi birinin çalışmayı durdurması PHP'nin sorunları tanımlamak ve bunları hızlı bir şekilde düzeltmek için yollara ihtiyacı olduğunda. Tamamen ayrı yürütme iş parçacıklarına, tamamen ayrı bellek segmentlerine ve her bir istek için güçlü bir sanal alana sahip olmadan temel çerçeveyi daha karmaşık hale getirdiğinizde, PHP'nin sistemine daha fazla zayıflık eklenir.

nginx + php-fpm ayrıca php uygulamalarını çalıştırmanın mükemmel bir yoludur. nginx'in FastCGI için yerel desteği vardır ve php-fpm, bir FastCGI ortamında php çalıştırmanın en iyi yollarından biridir. Burada php belgelerine bakın:

http://www.php.net/manual/en/install.fpm.php


Apache MPM'leri ile ilgili olarak sanırım anladım, prefork gitmenin yolu. Apache'nin yüksek bellek tüketimi nedeniyle bir nginx veya lighttpd kurulumuna eğilimliyim. Lighttpd ve PHP-FCGI, yetenekli bir şekilde kurarken kutudan çıkar, ancak 06/07'de herkesin konuşmaya devam ettiği bellek sızıntılarının hala mevcut olup olmadığından emin değilim. Ayrıca Nginx'in daha düşük CPU kullanımı olduğunu da okudum ama PHP-CGI ile PHP-FPM ile çalışmayı başaramıyorum. Paket yöneticisini kullanarak bunu Ubuntu'ya kurmanın kolay bir yolu var mı? Bu konuda herhangi bir okuma tavsiye ediyor musunuz?
Alix Axel

Çoklu evren etkinken, "apt-get install nginx" i lucid'de başardım ve şampiyon gibi çalışır - üretim sistemlerini kullanıyorum. Burada iyi bir başlangıç ​​noktası örneği var, howtoforge.com/… ama her zamanki gibi YMMV.
dialt0ne

Nptx'i apt kullanarak yükleyebiliyorum ama PHP yorumlayıcısına bağlayamıyorum. Sağladığınız bağlantı, php5-fpmpaketi sağlıyor gibi görünen yeni bir kaynağa sahip . Ben deneyeceğim.
Alix Axel

Bu bağlantı daha iyi olabilir howtoforge.com/... ben php5-fpm benim üretim sistemleri için brianmercer repo kullanıyorum.
dialt0ne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.