Hangi PHP opcode cacher ben performansını artırmak için kullanmak gerekir?

7 Cevap php

Ben, yüksek yük altında performansını artırmak için çalışıyorum ve opcode önbelleğe alma uygulamak istiyoruz. Ben aşağıdakilerden hangisi kullanmalıyım?

Ben de radar altında kaymış başka alternatiflere açığım.

Şu anda Apache 2 ve PHP 5.2 ile bir stok Debian Etch üzerinde çalışan

[Update 1]

Eklendi HowtoForge montaj bağlantılar

[Update 2]

Verilen cevaplar ve geri bildirimlere dayanarak, ben benim uygulama şu Apache JMeter test planı kullanarak tüm 3 uygulamaları test ettik:

  • Giriş
  • Erişim Ana Sayfa

Aşağıdaki gibi 50 eşzamanlı bağlantı ile, sonuçlar şunlardır:

No Opcode Caching
No Opcode Caching

APC
APC

eAccelerator
eAccelerator

XCache
XCache

Performance Graph (smaller is better)
Performance Graph

Yukarıdaki sonuçlardan, eAccelerator APC ve XCache kıyasla bir performans hafif bir kenara sahiptir. Ancak, ne yukarıda verilerden en önemli opcode önbelleğe herhangi bir tür performans muazzam bir destek vermesidir.

Ben nedeniyle aşağıdaki 2 nedenlerden APC kullanmaya karar verdim:

  • Paket resmi Debian deposunda mevcuttur
  • Daha fonksiyonel kontrol paneli

Benim deneyim özetlemek için:

Ease of Installation: APC > eAccelerator > XCache
Performance: eAccelerator > APC, XCache
Control Panel: APC > XCache > eAccelerator

7 Cevap

Ben cevap size çalışan web uygulamaları tipine bağlı olabileceğini düşünüyorum. Ben iki yıl önce bu kararı kendim yapmak zorunda kaldı ve Zend Optimizer ve eAccelerator arasında karar veremedi.

Benim karar için, ben sunucuyu test ab (apache tezgah) kullanılan ve üç kombinasyonları (zend, eaccelerator, çalışan her ikisi de) test edilmiş ve kendi eAccelerator büyük performans verdiğini kanıtladı.

Eğer zaman lüksüne varsa, ben benzer Testlerin kendiniz yapıyor, ve sonuçlarına göre karar öneriyoruz.

O pencere yüklemek kolay oldu çünkü ben APC kullanımı ve ben WAMP üzerinde geliştiriyorum.

Integrating APC into PHP6 was discussed here: http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc

And there are directions on installing APC on Debian Etch here: http://www.howtoforge.com/apc-php5-apache2-debian-etch

Eminim için söyleyemem, ama şimdi çalışıyorum yer APC ve eAccelerator bakıyor. Ancak, bu size etkileyebilecek - APC will be integrated into a future release of PHP (Ed Haber'in sayesinde bağlantı için).

Birkaç benchmarks with eAcclerator, APC, XCache çalıştırın ve (bir iyimserlik değil, bir önbellek olsa bile) Zend Optimizer var

Benchmark Results

Sonuç: eAccelerator XCache ve APC, ardından (tüm testlerde) hızlı. (Şemada tek bir WordPress Ana sayfa 10.000 kez aramak saniye sayısıdır).

Zend Optimizer her şey yavaş yapılmış (!).

Ben eAccelerator ile iyi bir başarı (yüksüz hız gelişimi belirgindir) yaşadım ama XCache zamanda oldukça umut verici görünüyor. Gerçi her biri ile bazı denemeler isteyebilirsiniz, uygulama her biri farklı ölçek olabilir.

Ben hiç sorunları ile artık daha bir yıl boyunca XCache kullanarak oldum.

Ben eAccelerator geçmek için çalıştı, ama segmentasyon hataları bir demet (bu hataların daha az affedici bulunuyor) ile sona erdi. EAccelerator için büyük yararı aynı zamanda bir iyimserlik var, sadece bir opcode önbellek değil olmasıdır.

Tam emin herhangi bir sorun olmadığından emin olmak için bunların her biri ile uygulamanızı test etmeli ve sonra yük altında test etmek apachebench kullanmak istiyorum.

Bu eklentiler tarihsel izini garip hatalar çok girmiştik. Bu hata bu önbellek durumuna bağlıdır çünkü kolayca teşhis edilemeyen tutarsız davranışlara neden olabilir.

Yani diyorum ki:

  1. Don't use any of the above. Buy more tin instead, it's a more reliable (i.e. error-free) way of increasing performance. OR
  2. Lütfen uygulama kapalı pantolon test olan, en sağlam Yukarıdakilerin hangisi ile gidin.

Ama ben söylemek istiyorum:

  1. GERÇEKTEN uygulama profilleme tarafından performans sorunlarına neden PHP kodu ayrıştırma emin olun. Ben öyle olmadığını, son derece muhtemel olduğunu düşünüyorum - Eğer bunlardan herhangi birini takarak zaman (aslında, olumsuz verimli zaman kullanarak) israf olurdu bu durumda.