WordCamp Us Talk: Dinamik WordPress sitelerini kurtarma
CTO Aaron Edwards’ımız geçen hafta sonu WordCamp ABD’de dinamik web sitelerini, özellikle Edublogs, CampUSpress ve WPMU Dev. Bu, sunumundan düzenlenen bir transkripttir. Ölçek ve hatta Aaron’un CTO rolü hakkında sorularınız varsa, makalenin sonunda ona bir yorum bırakın. Sunumdan slaytta kaydırın. Genellikle, WordCamps gibi etkinlikler hakkında performans görüşmelerine gittiğinizde, hoparlörler site ön uçtan daha fazla konuşur, hızlanır, eklentiler, yapılandırmalar, bunun gibi her şey ve ana odak tam sayfalardadır. Önbelleği Kaydetme Sorunu, dinamik bir web siteniz varsa ve bbpress, e -ticaret, wordpress multisite, buddypress veya hatta üyelik siteleri çalıştırıyorsanız -Ziyaretçilerinizin çoğunun gireceği tüm siteler -Somers’ın tamamen atlayacağı tüm siteler neredeyse her zaman – , bu size hiç yardımcı olmaz.
Bu yüzden bugün, yığınınızın bir parçası olarak bir avlu yapma zamanını geliştirmekten bahsedeceğim. Girdiğinizde web sitenize normal bir istek görürseniz, şöyle görünebilir:
Bu büyük bıçağı, sayfanızın oluşturulmasını ve size gönderilmesini beklediği yerde göreceksiniz ve bundan sonra tarayıcınız tüm varlıkları ve diğer şeyleri indirebilir, bu yüzden bu sayfayı yapma zamanı ve nasıl geliştirebileceğimiz hakkında konuşun . Siteniz üzerindeki büyük etki, özellikle de dinamik bir site ise.
Google, sayfanızı oluşturma zamanı için maksimum 200 milisaniye önerir, ancak aslında bunu mümkün olduğunca çok daha düşük hale getirmek istersiniz. Ancak, her zaman kodu çalıştıran çok sayıda eklenti ve büyük temanız olduğunda, işareti yerine getirmek büyük bir zorluk olabilir. Bu sunum üzerinde ilk çalışmaya başladığımda, birkaç farklı sunucuya ve mimariye ölçeklendirme hakkında konuşacağımı düşündüm, ancak kendi deneyimimden, bunu yapmanın performans sorunlarını gerçekten çözmediğini fark ettim, ki bu sadece onları ikiye katlamak için yapılacak Önce temel performans sorunlarını çözmez. Temel sorunu çözmek için veritabanını optimize edin, normal bir sayfa oluşturma zamanına bakarsanız, yukarıdaki resimde görebileceğiniz gibi birkaç bölüme ayırabilirsiniz. En büyük indirim genellikle veritabanınızdır. Bu, sitenizde karşılaşacağınız en büyük engeldir. Veritabanı sorununu düzeltmek için mümkün olduğunca çok şeyi optimize etmek ve kuyruğunuzu görmek istersiniz. Eklentiniz tarafından yapılan sorguları analiz etmenizi ve dizin ekleyebileceğiniz veya eklentiden tamamen kurtulabileceğiniz sorunun alanını tanımlamanızı sağlayan Query Monitor adlı olağanüstü bir eklenti vardır.
MySQL yapılandırmanızı optimize etmek önemlidir. Cache Kueri büyük bir şey. Şaşırtıcı bir şekilde, MySQL’deki Kuari önbelleğini kaç kişi etkinleştirmez, çünkü yaygın olarak okunan birçok masanız varsa bu çok yararlı olabilir. MySQLTuner, yapılandırmanızı analiz eden ve veritabanı yapılandırmanızı nasıl artırabileceğiniz konusunda size tavsiyelerde bulunan küçük bir komut dosyasıdır. Ayrıca, masanızı Innodb’a dönüştürün – sadece yazılı tablolar ve tüm tablolar değil, çünkü Edublogs için bizim gibi büyük bir çoklu WordPress kurulumu çalıştırırsanız, tüm tablolarınızı Innodb’a dönüştürmek bazı büyük sorunlara neden olabilir – İnanın bana, deneyimledik . Bu nedenle, birçok yazılı isteği olan tablolara daha fazla odaklanma eğilimindeyiz, bu nedenle çoklu kurulumlarda küresel tablo. MariaDB, MySQL için bir alternatiftir. Bu aslında daha yeni bir kodu olan bir MySQL çatalı. MariaDB’ye geçerek% 10 -% 20 performans artışı elde edebilirsiniz. Ve Amazon’da ev sahipliği yapacak kadar şanslıysanız, Aurora MySQL için yeni bir hizmet alternatifi-2-3 kat daha iyi bir ölçüt ve hıza sahip, bu çok şaşırtıcı. Sonunda WordPress nesne önbelleği, veritabanında geçirdiğiniz zamanı optimize etmenin en iyi yolu, kuyruğun en başından beri oraya gitmesine asla izin vermemektir ve WordPress nesnesi önbelleğinin yer aldığı yerdir. Genellikle, PHP doğrudan MySQL’e ses çıkarır, bu yavaştır, ancak yapılandırılmış bir nesne önbelleğiniz varsa, çok fazla kuyruk ve bellekteki isteği önbelleğe alabilirsiniz, bu çok daha hızlıdır.
Bazı nesne önbellek eklentileri memcache ve redis’dir. Bu öneriyorum çünkü belleğe dayanıyor ve birkaç sunucuyu dağıtıyorsanız, aynı önbelleği paylaşabilirler. Dosya tabanlı veya APC (alternatif PHP önbelleği) yapmaya çalışırsanız, dosya tabanlı bazen kullanmamaktan daha yavaştır, bu yüzden bunu yapmamayı şiddetle tavsiye ederim. PHP Optimizasyonu: Kod profilini görmeniz gereken başka bir şey yapmak, sitenizdeki sayfanın yükleme süresinden PHP parçalarıdır. Yapabileceğiniz en önemli şeylerden biri kodunuzu optimize etmektir. Yeni başlayanlar için, kaynak domuzuna izin veren P3 (eklenti performans profili) adlı harika bir eklenti var, gerçekten ihtiyacım yok, bundan kurtulacağım. ” Yeni başlayanların kullanması çok kolay.
Daha yetkin kullanıcılar için, kod profilinizi oluşturmanıza ve hangi işlevlerin kötü olduğunu, hangi döngülerin çok sık çalıştığını görmenize olanak tanıyan Xdebug vardır. Ve çok fazla trafik aldığınız bir üretim sitesinde, New Relic, PHP kodu profilinizi analiz etmenize ve oluşturmanıza yardımcı olan olağanüstü ücretli bir hizmettir.
PHP’yi optimize etmek: En kötü ihlal edenler, PHP kodunu analiz ederken yaşadığım sorunlardan bazılarıdır: gereksiz sorgular ve optimize edilmemiş nesne önbelleğine çok fazla sorgu depolayabilir, çok zaman kazanabilirsiniz. WPMU Dev web sitesinde, kendi eklentilerimizin çoğunu kendi yüksek ölçekli sitemizde çalıştırıyoruz. Bir nesne önbelleğiyle eklentileri optimize etmeye çalışmak için çok zaman harcıyoruz. Ayrıca, eklentiler istatistikleri ve aktarma günlüğü için diğerleri gibi eklentileri arayın. Genellikle, her sayfa yüklemesinde veritabanına yazmaya çalışırlar – kesinlikle yasaktır, çünkü yüksek trafiğe sahip bir siteniz varsa sitenizi yavaşlatır. , PHP sayfanızın oluşturulmasını tamamlayabilmeden önce hizmete verilen yanıtları beklemelidir. Ve eğer itfaiye yavaş yavaş çalışırsa, sitenizi yavaşlatacak ve üçüncü taraf hizmeti ölürse bir kaza bile yapacak. Bu nedenle, düşük bir bekleme süresi kullandığınızdan ve mümkün olduğunca önbellekte sakladığınızdan emin olmak istersiniz. Codex’in var olduklarını söylese de geçici olarak önbelleğe alınmayın, çünkü geçici süresi dolmuş ve itfaiye azalırsa, sayfa her yüklendiğinde harici aramalar yapacak ve siteniz tarafından yapıldığı gibi sıkışacaktır. daha önce edublogs. Bu yüzden buna dikkat et.
Yeniden yazma kuralı kötü yazma bazı eklentiler her sayfa yüklenen yeniden yazma kurallarını kaldırmaya çalışacaktır. Bu hala yaygın bir sorun. Doğrudan dosya sisteminize yazmaya çalışan herhangi bir doğrudan dosya sistemine erişin, aynı zamanda sitenizi de yavaşlatacaktır. PHP’yi hızlandırın PHP hızını artırmanın başka bir yolu doğrudan mimari üzerinde çalışmaktır. Bu yüzden şiddetle tavsiye edilen Nginx’i kullanarak. Apache’yi beş yıldır kullanmadım çünkü CSS, JavaScript, bu tür şeyler yüklerken bile her sayfa yüklemesi için PHP yüklemem gerekiyor. Nginx sadece PHP’ye dinamik isteklerinize devam edecektir, böylece size çok fazla kafa alanı sağlar. Multisite çalıştırıyorsanız, medya dosyanızın önünde CDN veya Vernik önbelleği kullandığınızdan emin olun. Birçok kişi bunu bilmiyor, ancak yüklemeniz aslında Multisite’deki PHP aracılığıyla yeniden yazılıyor – bu yaptıkları garip bir şey – ancak medyadaki PHP talebini önleyebiliyorsanız size çok fazla kafa alanı sağlayacak. Ayrıca, 5.5, 5.6 gibi en son PHP sürümünü kullandığınızdan emin olun, çünkü 5.2 gibi bazı eski sürümlere kıyasla% 20 hız elde edebilirsiniz. Ve son olarak, eğer opcache kullanmıyorsanız, PHP’ye yerleştirildiği için deli olursunuz. Sadece etkinleştirmeniz gerekir ve isteğinizi iki kez hızlandırır. HHVM veya PHP7’ye dönerek, yakın zamanda piyasaya sürülen PHP7’ye geçmeyi düşünebilirsiniz. EDublogs ve WPMU Dev ve hemen barındırdığımız bazı sitelerde başlatmaya başlamaktan çok heyecanlıyım.
Bu, büyük bir şey olan önceki PHP sürümünden 2-3 kat daha yüksek hızı gösterir. Mümkünse en son PHP sürümünü kullanmak için sunucunuzu değiştirmeyi düşünün. Büyük ölçekte uygulama izleme Direkt bir siteniz var ve büyük ölçekte çalıştırdıktan ve birçok istekte bulunduktan sonra dikkat etmeniz gereken başka bir şey, nasıl izleneceğinizdir. Sitemiz için Etsy’deki ekip tarafından olağanüstü bir açık kaynak projesi olan Statsd kullanıyoruz. Statsd WordPress Client adlı yazdığım özel bir WordPress eklentisiyle kullanıyoruz. Bu, kodunuzu ve WordPress sitenizde herhangi bir gecikmeye neden olmadan neler olduğunu analiz etmenizi sağlar. Geliştirici, yığınımızın her yerinde bir kod satırı ekler ve belirli bir kuyruğun ne kadar sürdüğünü veya kuyruğun kaç kez etkinleştirildiğini görür. Bunun gibi her şey kodlarını optimize etmelerine yardımcı olur. Kendiniz başlatabilirseniz statsd görmenizi şiddetle tavsiye ederim. Değilse, New Relic iyi bir ücretli hizmettir, ancak birçok sunucunuz varsa, çok hızlı bir şekilde pahalı olabilir. Senin için çok teknik mi? Tüm bunlar sizin için çok teknik geliyorsa ve bunun sizin için bununla ilgilenmesi için deneyimli Sysadmin kiralayamazsanız, Kinsta, Paceless ve WP motoru gibi yönetilen WordPress barındırmasını görmek isteyebilirsiniz. Birçok ana bilgisayar burada bahsettiğim önerileri, nesne önbelleği ve nginx kullanma gibi uygulamayı başarıyor.
Çoğu, belirli paketlerde HHVM’yi ve yakın zamanda PHP7 desteğini serbest bırakmaya hazır olduğum birçok pakette destekledi.Böylece yönetilen barındırma sizin için bir seçenek olabilir.WordPress ölçeği hakkında sorularınız var mı?Yoksa bu yazıda belirtilen araçları ve eklentileri nasıl kullandığımız hakkında daha fazla bilgi edinmek ister misiniz?Aaron için aşağıya bir yorum bırakın.Etiketler: dinamik web sitesi ölçeklendirme
WPMU Dev