Nedir performans (php / mysql) açısından bir komut giderme hakkında iyi bir yolu?

4 Cevap php

Ben sıfırdan bir site CMS yazılı ve şimdi site yavaş yavaş Im olması gerekenden çok yüksek sunucu yükünü gördükten trafiği (30-40k/day) almaya başladığını ettik. Bu ram 8GB ile dört çekirdekli bir makinede, 6-9 her zaman etrafında gezinen. Ben 400-500k/day sitelerde güzel yerine komut yazdım, bu yüzden Im tamamen beceriksiz değil düşünmek istiyorum.

Ben, sorguları birleştirerek tamamen bazı mysql aramaları ortadan kaldırarak, gerekli php ile güncellenen statik TXT dosyaları ile sitenin bazı bölümleri değiştirerek yaklaşık% 60 her sayfada yapılan sorguların sayısını azaltmak ettik. Bütün bu değişiklikler (yerine daha önce olduğu gibi 1.7, 0.3s dizin yükler) sayfa yürütme süresini etkiledi.

Orada neredeyse hiç IOwait ve mysql DB sadece 30MB. Site lighttpd, php 5.2.9, mysql 5.0.77 çalışır

Ne tam olarak yüksek yük neden olan altına almak için ne yapabilirim? "Top" Bana her zaman% 50-95 işlemci kullanımı arasında gezinen onun mysql, söyler çünkü ben gerçekten çok istiyorum, sorunu lokalize.

4 Cevap

Yapabileceğiniz en iyi şey, uygulama kod profil etmektir. Çağrılar kaynaklarının çok tüketen hangi öğrenin. Burada bazı seçenekler (ilk üç Google "php profilcisine" için vurur) şunlardır:

Sen çok yavaş bazı SQL sorguları olabilir, ancak nadiren çalıştırılır, onlar muhtemelen performans sorunlarının önemli bir nedeni değildir. Bu size daha hızlı olan SQL sorguları var, ama onlar kadar sık ​​performansına net etkisinin büyük olduğunu çalıştırmak olduğunu olabilir. Uygulamayı profilleme bu belirlemenize yardımcı olacaktır.

Veritabanı kullanımı ile ilgili uygulama performansını artırmak için en genel amaçlı tavsiye seyrek değiştirir verileri belirlemek ve hızlı erişim için bir önbellek verileri koymaktır. Bu uygulama kullanım alışkanlıklarına çok bağlıdır beri, veri bundan en çok yarar ne olacağını belirlemek için size kalmış.

Bildiğim kadarıyla önbelleğe alma için teknoloji olarak, APC ve memcached PHP iyi bir destek ile seçeneklerdir.

Ayrıca uygulama ile ilgili her türlü iyileştirmeleri belirlemek için dikkatlice optimization chapter MySQL okursunuz.

Diğer iyi kaynaklar MySQL Performance Blog, ve kitap "High Performance MySQL." Bir MySQL tabanlı web sitesi çalışan konusunda ciddi iseniz, sık sık bu kaynakları danışmanlık alınmalıdır.

EXPLAIN sizin sorunlarınızı / optimize etmek için kullanın. Bu tablo başvurulan ve kaç satır okunuyor nasıl size gösterecektir. Bu çok kullanışlı.

Eğer herhangi bir değişiklik yaptık Ayrıca eğer MySQL configuration, bunu tekrar etmek isteyebilirsiniz.

mytop başlamak için iyi bir yerdir. Temelde MySQL için üst, ve DB tam olarak ne yapıyor içine bir pencere verecek:

http://jeremy.zawodny.com/mysql/mytop/

Nuh

Bu nedenlerle herhangi bir sayı olabilir, bu yüzden proding bir sürü alabilir. Iyi bir ilk adım yavaş sorgu günlüğü açmak ve elle veya bir parser ile üzerine gitmek olacaktır. Sen (Sıralanmayan şey vurmak belki olanları) optimize etmek için özel yoğun kullanılan, yavaş sorguları alabilirsiniz