it-swarm.asia

Hangi PHP (opcode) önbellek kullanılmalı ve neden?

APC, XCache, Memcache, eAccelerator vb.Gibi bazı PHP (opcode) önbelleklerini duymaya devam ediyorum.

Ama nasıl seçeceğimi hiç bulamadım. Bir önbellek sisteminin sunması gereken performans avantajının yanı sıra, diğer faktörlerin de endişe kaynağı olması gerekir.

Neden X önbellek sisteminin Y'den daha iyi olduğunu söyleyeceksiniz? Göreceli performans artışı konusunda daha az endişeliyim. Herhangi iki sistem arasındaki küçük farklar daha az önemlidir.

Soruma genel bir cevap mümkün değilse, burada birkaç işaretçi var. Mediatemple (kök erişimli) özel VPS kullanıyorum. RAM, 512 MB (fiziksel) + 400MB (takas) WordPress ve kuzenleri WordPress-MU ve BuddyPress hakkında endişeliyim. Kodlarımızın/sitelerimizin% 90'ı WordPress ailesine aittir.

Biraz yardım için şimdiden teşekkürler.

44
rahul286

Listelediğiniz ürünler farklı amaçlara hizmet eder.

OPCode önbellekleri

Bunun üzerinde görüldüğü gibi birçok PHP Hızlandırıcı (OPCaches) vardır Wikipedia listesi . Açık kaynak ürünlerinde olduğu gibi, hepsi oldukça benzerdir. XCache lighttp = PHP hızlandırıcı ve bu HTTPd'yi çalıştırırken varsayılan seçimdir. Apache ile de iyi çalışır, ancak APC resmi olarak desteklenerek sosyal olarak biraz daha "diğerleriyle iyi oynar" gibi görünüyor PHP'nin bir parçası olarak ve resmi PHP dağıtımıyla adım adım yayınlanır).

Yavaş gelişmesi ve PHP'nin yayınlarına karşı gecikmesi nedeniyle usign eAccelerator'ı terk ettim ve APC'nin benzer performansla resmi mübarek durumu.

Bu ürünler tipik olarak düşer; hiçbir kod değişikliği anında performans artışı. Büyük kod tabanlarıyla (Drupal, Wordpress), yanıt süresini ve bellek kullanımını azaltırken performans kat daha iyi olabilir.

Veri Önbellekleme

Memcache biraz farklı bir üründür - bunu hafif bir anahtar değer sistemi olarak düşünebilirsiniz birden çok sunucuya ölçeklendirilebilir . Memcache desteği için yazılım geliştirilmelidir ve bazı sorunları diğerlerinden daha iyi çözer. Web sitenizde gerçek zamanlı hisse senedi değerlerinin bir listesi varsa, web sitenizde görüntülenen geçerli değerin yerleşik bir listesini tutmak için Memcache kullanabilirsiniz. Kısa süreli yeniden kullanım için oturum verilerini depolamak amacıyla kullanabilirsiniz. Tam sayfa önbellek gibi başka şeyler için veya MySQL'in yerine geçemezsiniz.

Ayrıca Wordpress gibi Wordpress'in performansını önemli ölçüde artırabilecek WP-Super-Cache eklentileri vardır (infact, WP-Super-Cache içindeki statik HTML tabanlı sitelere rakip olabilir) birçok vaka)

Özetle - "ayarla ve unut, iyi desteklenen bir ürün" istiyorsanız APC'yi şiddetle tavsiye ederim.

33
SirStan

Sorunuzu güzelce cevaplayan stackoverflow'da iyi bir yanıt gönderildi.

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8

Sadece şeylerin biraz değiştiğini ve APC'nin PHP 6 çekirdeğine dahil edilmeyeceğini görünüyor.

APC'nin yavaş gelişimi var ve asla PHP 5.5 uyumlu olmayacak gibi görünüyor. Bu nedenle, PHP Zend OPCache opcode önbelleğini ayarlayacak) PHP CORE uzantısıdır. Daha fazla bilgiyi burada bulabilirsiniz http://wiki.php.net/rfc/optimizerplus .

Önemli not: Zend OPCache, APC gibi kullanıcı veri önbelleğine sahip değildir, bu nedenle kullanıcı veri önbelleğine ihtiyacınız varsa Memcache ile birlikte kullanabilirsiniz.

6
Nemke

APC PHP6 içine yerleştirilecek, bu yüzden mantıklı bir seçim. Kullanıyorum ve performans artışı inanılmaz. Opcodes (yani db sorgu sonuçları) dışında bir şey önbelleğe almanız gerekiyorsa, bunun için APC'yi de kullanabilirsiniz, ancak APC önbelleklerini birden çok sunucu arasında paylaşmak mümkün değildir. Yalnızca tek bir sunucuda önbellek kullanmanız gerekiyorsa, APC mükemmeldir. Birden fazla sunucuya ölçeklendirmeniz ve aralarında bir önbellek paylaşmak istiyorsanız, memcached sizin erkeğinizdir.

Yapacağım bir şey, yaptığınız herhangi bir (opcode olmayan) önbellekleme için bir sarıcı sınıf oluşturmaktır. Bu şekilde, kodunuzu değiştirmeden önbellek motorunu değiştirebilirsiniz.

6
lo_fye

PHP sürümü en az 5.50 çalıştırıyorsa, OpCache en iyi seçeneğinizdir (PHP/PECL yerel kütüphanesi).

http://php.net/manual/en/book.opcache.php

PHP 5.5'ten önceki sürüm çalıştırılıyorsa), APC (PHP/PECL yerel OpCode önbellek) korunmasız ve ölü olarak kabul edilmesine rağmen en basit seçim olacaktır:

http://php.net/manual/en/book.apc.php

PHP) yerel OpCache işlevini kullanmak size 3. taraf kitaplıklarını koruma zahmetinden kurtarmalıdır.

3
recurse

Memcache, anahtar/değer çiftlerini önbelleğe alır, işlem kodlarını değil. Opcode önbelleklerinden biriyle birlikte kullanabilirsiniz.

0
user10699