it-swarm-tr.com

WordPress bellek kullanımını profillemenin ideal yolu nedir?

Şu anda 30 ya da daha fazla siteye sahip iki Rackspace Cloud sunucusunda, bir Web'de ve bir veritabanında, bir WordPress multisite örneğini çalıştırıyor 'uz. Nginx'i statik varlıklar için önüne koydum ve Apache tüm dinamik istekleri yerine getiriyor. Ayrıca veritabanı için Memcached ve PHP için önbelleğe alma APC op kodunu yapılandırdım. W3 Total Cache, sahip olduğumuz tüm sitelerde varsayılan olarak etkindir.

Tek bir konuda çok hızlı: Apache işlemleri düzenli olarak 80 ila 120 MB arasındadır. Web sunucusunda 2 GB bellek var, bu da fritz'de işler kadar 15 veya daha fazla işlem alıyorum. Belli ki süreçler o kadar büyük olmamalı ama neden olduklarına dair kafam karıştı.

Neler olduğunu tanımlamak için iyi bir strateji nedir?

Şimdiden teşekkürler!

Güncelleme 10/2/10: Merak edenler için, bellek sorunu sorununun çözümü, PHP xdebug'u devre dışı bırakıyordu (yapılandırmada yanlışlıkla etkinleştirilmiş ve rasgele bellek kullanımına neden oldu).

8

Bahsettiğiniz Apache işlem bellek miktarı (işlem başına 80 - 120 MB) iki nedenden ayrılabilir.

  1. Apaçi
  2. Wordpress

Apaçi

Apache'yi yalnızca ihtiyacınız olan modül sayısını ve belleği azaltacak diğer optimizasyon ayarlarını yükleyerek optimize edebilirsiniz. Bunu henüz optimize etmediyseniz, birkaç ayar yapın.

Wordpress

Wordpress sadece çok fazla hafıza tüketir ve hiç de optimize edilmemiştir. Veritabanı sınıfını daha doğru bir şekilde uygulanmış bir şeyle değiştirmekle başlarım. Bu daha fazla hız kazanmalı ve bellek kullanımını çok azaltmalıdır. Bunun yanında önerecek çok şeyim yok. Worpdress kullanmamak, sanırım yararlı sayılmaz.

Stratejiler

Neler olup bittiğini öğrenmek için, bir wordpress isteğinin ne kadar hafıza aldığını izlemeniz gerekir. Wordress bellek kullanımını izlemek için kullanabileceğiniz bir en yüksek kullanım fonksiyonu ( memory_get_peak_usage() /) vardır. Yazdığın 80 - 120 MB'a yaklaşırsa, wordpress'in baş ağrılarınızı yarattığını biliyorsunuzdur. Zaman damgasını, en yüksek belleği, yürütme süresini ve istenen URI'yi kaydetmek isteyebilirsiniz.

Önbelleğe alınmış wordpress sayfalarını sunmak için Nginx kullanmak kesinlikle size yardımcı olacaktır, çünkü wordpress'in yüklenmesini önleyecektir - kullandığınız "gelen" önbelleklerde bile. Kavramsal olarak kırılırlar çünkü bir wordpress eklentisidirler, bu nedenle en azından wordpressin bir kısmının önbelleklenmiş sonuçlar için bile yüklenmesi gerekir.

4
hakre

Daniel,

Kenkeiter'e saygıyla katılmıyorum, apache'nin önünde nginx'i ters proxy olarak kullanmayı biliyorum. Harvard Yasası bu yöntemde büyük başarı elde etti ve nginx ile arayüze yardımcı olan WordPress eklentisine bir link vererek bunun nasıl yapıldığına dair harika bir makaleye sahip:

http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/

Harvard Kanunu'nda keşfettikleri şey, nginx'in temel olarak ön uçtaki tüm istekleri önbelleğe almasıyla, arka uçta başka herhangi bir önbellek türü eklentiyi kullanma performansını geliştirmemesi ve ek karmaşıklığa değmemesiydi. Nginx'i bu şekilde kullanma konusunda ciddiyseniz, WP-tarafı önbelleklemesi dahil, dinamik süreçleri azaltmaya çalışın.

Apache erişiminize dikkatlice bakmak gibi bazı temel problemler ve ne tür sorguların gerçekten dinamik olarak yapılması gerektiğini görmek için hata günlükleri ve bu gibi durumları azaltmaya çalışmak da iyi bir başlangıç ​​olabilir.

1
mitcho

Her şeyden önce, Apache ve Nginx kullanıyorsunuz - bir çeşit gereksiz. PHP ile Nginx/FastCGI kullanıyor olmalısınız. Bu sitedeki öğretici yardımcı olmalıdır. Aksi halde, benim en iyi tahminim, kodunuzda yapılan son değişikliklerin PHP içindeki bazı hataların belleği doğru şekilde serbest bırakmamasına neden olmasıdır. Bir Apache işleminin bu kadar belleği tüketmesi için sebep yok.

http://interfacelab.com/nginx-php-fpm-apc-awesome/

İyi şanslar!

@kenkeiter

0
kenkeiter