PHP için Cache yöntemlerine merak saldığımdan bu yana pek çok makale ve post okudum.
Özellikle yurt dışında bu konu 2005 itibarı ile oldukça yaygın hale gelmiş.
Çok yoğun bir siteye sahip olup cache sistemi kullanmayan neredeyse yok gibi.
Geçtiğimiz günlerde vBulletin + vbSEO ikilisini hızlandırmak için memcached in nasıl kullanılabileceğini ve kurulumunu anlatmıştım.
Memcached i kurup deneyenler (bende dahil) memnun kalıp herkese memcached kurmalarını tavsiye etmiştik.
Loadlar düşmüş ve sayfa açılımları hızlanmıştı.
Ancak bununla kalmayıp başka neler yapabilirim diye araştırmaya devam ettim.
Araştırmalarım halen devam ediyor ancak hali hazırda edindiğim yeni bilgileri sizinle paylaşmak istedim.
Öncelikle memcached in dağınık yapıda birden fazla dedicated serveri olanlar için daha iyi bir seçim olduğunu öğrendim. İngilizce teminoloji ile memcached distributed environment lar için idealmiş.
Memcached TCP protokolü kullanıyor. Bu sayede diyelim ki 5 serveriniz var ve bunlardan 1 tanesi MySQL için atanmış.
Bu durumda MySQL serveriniza memcached kuruyorsunuz ve tüm MySQL sorgularınızı memcached de cacheliyorsunuz. Diğer 4 webserver MySQL e bağlanmadan önce memcached e bakıyorlar, veri cachelenmş ise hoop cacheden veriyi alıyor ve MySQL i fazla yormuyorlar.
Örneğin bir shopping (alışveriş) kartınız var ve her sayfa açıldığında o sayfanın gösterilmesi için 20 tablonun okunması gerekiyor. Siz ne yapıyorsunuz, 20 tablodan gelen sonucu memcached de 1 saatliğine saklıyorsunuz, 1 saat boyunca gelen istekler MySQL yerine memcached den yani doğrudan bellekten alıyor sonuçları.
İşte memcached in esas kullanım amacı bu, network üzerinde 1 den fazla serveriniz varsa MySQL loadunu düşürmek için mükemmel bir çözüm.
Ancak 1 serveriniz varsa ve bu server üzerinde değişken cachelemesi yapmak istiyorsanız, hız ölçümleri gösteriyor ki memcached en yavaş çözümlerden bir tanesi.
Local, yani sadece 1 server üzerinde caching yapacaksanız: APC, Xcache ve eAccelerator bu işi memcached den çok daha hızlı yapıyor.
Bu zamana kadar bu cacheleri sadece PHP kodunu cachelemek için kullanmıştık, oysa değişken cachelemek için de memcached gibi ekstra bir program kurmadan, hali hazırda kullandığımız PHP cache sistemini kullanabileceğimizi öğrendim.
Ben PHP için hali hazırda Xcache kullanıyordum. Bunun için Xcache i vbSEO ve kendi yazdığım PHP kodlarındaki değişkenleri cachelemek için kullanmaya karar verdim.
Xcache hem memecached den daha hızlı hemde hali hazırda kullandığım caching sistemi olduğu için yeni bir kurulum yapmam gerekmedi.
php.ini içinde aşağıdaki değişiklikleri yapmam yeterli oldu.
Bunun ardından apache yi restart ettim.
Hemen vbSEO kontrol panel ekranına gidip cache sistemleri bölümünde memcached işaretliydi onun yerine Xcache i seçtim.
vBSEO nun Xcache değişken cache ini kullanıp kullanmadığını görmek için Xcache admin paneline girip bakabilirsiniz. vbseo_storage değişkeninin cachelendiğini göreceksiniz.
Özellikle yurt dışında bu konu 2005 itibarı ile oldukça yaygın hale gelmiş.
Çok yoğun bir siteye sahip olup cache sistemi kullanmayan neredeyse yok gibi.
Geçtiğimiz günlerde vBulletin + vbSEO ikilisini hızlandırmak için memcached in nasıl kullanılabileceğini ve kurulumunu anlatmıştım.
Memcached i kurup deneyenler (bende dahil) memnun kalıp herkese memcached kurmalarını tavsiye etmiştik.
Loadlar düşmüş ve sayfa açılımları hızlanmıştı.
Ancak bununla kalmayıp başka neler yapabilirim diye araştırmaya devam ettim.
Araştırmalarım halen devam ediyor ancak hali hazırda edindiğim yeni bilgileri sizinle paylaşmak istedim.
Öncelikle memcached in dağınık yapıda birden fazla dedicated serveri olanlar için daha iyi bir seçim olduğunu öğrendim. İngilizce teminoloji ile memcached distributed environment lar için idealmiş.
Memcached TCP protokolü kullanıyor. Bu sayede diyelim ki 5 serveriniz var ve bunlardan 1 tanesi MySQL için atanmış.
Bu durumda MySQL serveriniza memcached kuruyorsunuz ve tüm MySQL sorgularınızı memcached de cacheliyorsunuz. Diğer 4 webserver MySQL e bağlanmadan önce memcached e bakıyorlar, veri cachelenmş ise hoop cacheden veriyi alıyor ve MySQL i fazla yormuyorlar.
Örneğin bir shopping (alışveriş) kartınız var ve her sayfa açıldığında o sayfanın gösterilmesi için 20 tablonun okunması gerekiyor. Siz ne yapıyorsunuz, 20 tablodan gelen sonucu memcached de 1 saatliğine saklıyorsunuz, 1 saat boyunca gelen istekler MySQL yerine memcached den yani doğrudan bellekten alıyor sonuçları.
İşte memcached in esas kullanım amacı bu, network üzerinde 1 den fazla serveriniz varsa MySQL loadunu düşürmek için mükemmel bir çözüm.
Ancak 1 serveriniz varsa ve bu server üzerinde değişken cachelemesi yapmak istiyorsanız, hız ölçümleri gösteriyor ki memcached en yavaş çözümlerden bir tanesi.
Local, yani sadece 1 server üzerinde caching yapacaksanız: APC, Xcache ve eAccelerator bu işi memcached den çok daha hızlı yapıyor.
Bu zamana kadar bu cacheleri sadece PHP kodunu cachelemek için kullanmıştık, oysa değişken cachelemek için de memcached gibi ekstra bir program kurmadan, hali hazırda kullandığımız PHP cache sistemini kullanabileceğimizi öğrendim.
Ben PHP için hali hazırda Xcache kullanıyordum. Bunun için Xcache i vbSEO ve kendi yazdığım PHP kodlarındaki değişkenleri cachelemek için kullanmaya karar verdim.
Xcache hem memecached den daha hızlı hemde hali hazırda kullandığım caching sistemi olduğu için yeni bir kurulum yapmam gerekmedi.
php.ini içinde aşağıdaki değişiklikleri yapmam yeterli oldu.
Kod:
xcache.var_size=1M
xcache.var_count=1
xcache.var_slots=8K
xcache.var_ttl=7200
xcache.var_maxttl=14400
xcache.var_gc_interval=300
Hemen vbSEO kontrol panel ekranına gidip cache sistemleri bölümünde memcached işaretliydi onun yerine Xcache i seçtim.
vBSEO nun Xcache değişken cache ini kullanıp kullanmadığını görmek için Xcache admin paneline girip bakabilirsiniz. vbseo_storage değişkeninin cachelendiğini göreceksiniz.