İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

vbSEO icin memcached yerine Xcache kullanın

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
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.

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
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.
 

kralex

0
İyinet Üyesi
Katılım
23 Ocak 2008
Mesajlar
36
Reaction score
0
peki memcache i serverdan kaldırmak gerek mi yoksa ikisini birden kullanabilirmiyiz.
vbulletin config.php ye ayar yapmıştık ya diğer anlattığın dökümanda onlarda değişiklik yapmamız gerekli mi?
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
peki memcache i serverdan kaldırmak gerek mi yoksa ikisini birden kullanabilirmiyiz.
vbulletin config.php ye ayar yapmıştık ya diğer anlattığın dökümanda onlarda değişiklik yapmamız gerekli mi?

memcached kurduysanız ve Xcache de kurulu ise Xcache e geçmek için yapılması gerekenler sırası ile şu şekilde:

1. vbSEO panelindeki cache sistemleri bölümünden memcached i değil none (hiçbirini) seçin ve kaydedin. Config dosyasının kayıt edildiğinden emin olun. Kayda açmak için chmod 666 confıg_vbseo.php yapmanız gerekebilir.

2. vbulletin config dosyası (includes/config.php) içine memcached için eklenen kısımları kapatın. Satır önüne // koyarak kapatma işlemini yapmış olursunuz
Kod:
// $config['Datastore']['class'] = 'vB_Datastore_Memcached';
// $config['Misc']['memcacheserver'] = '127.0.0.3';
// $config['Misc']['memcacheport'] = '11211';
3. php.ini dosyasındaki memcache satırlarını kapatın. Satır önüne ; koyarak kapatma işlemini yapmış olursunuz
Kod:
;
; memcache bolumu
;
;extension = "memcache.so"
;memcache.allow_failover = 0
4. Apache yi restart edin (service httpd restart)

5. vbSEO panelindeki cache sistemleri bölümünde Xcache i seçin.

6. memcached prosesini /etc/rc.local içinden kaldırın.

7. Hali hazırda çalışan memcached prosesini kapatın
Kod:
kill `ps -ef|grep memcached|grep -v grep|awk '{print $2}'`
 

kralex

0
İyinet Üyesi
Katılım
23 Ocak 2008
Mesajlar
36
Reaction score
0
valla abi kuramadım xcache i :( vps kullanıyorum ondan mı acaba :( diyicem olmadı :D

İnternet sunucusu =Apache v2.0.61
PHP =5.2.5
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
valla abi kuramadım xcache i :( vps kullanıyorum ondan mı acaba :( diyicem olmadı :D

İnternet sunucusu =Apache v2.0.61
PHP =5.2.5

Xcache başlığı altına sorununu yaz istersen.
Bir de Xcache Zend le uyumlu değildi sanırım.
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
kendi yazdığımız bir scriptte xcache'i kullanmak için nasıl bir işlem yapmalıyız? örnek bir makale veya örnek kod parçacıkları var mı elinizde?
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
kendi yazdığımız bir scriptte xcache'i kullanmak için nasıl bir işlem yapmalıyız? örnek bir makale veya örnek kod parçacıkları var mı elinizde?

atay, şu anda o kod üzerinde çalışıyorum, testler olumlu. Biraz daha deneyip fonksiyonu buraya koyacağım.
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
çok güzel olur. şahsen incelemek isterim, kendi sitemde bazı yerlere basit cacheler yaptıktan sonra inanılmaz farklar oldu. acaba bu tarz sistemleri adapte edince nasıl birşey olur denemek isterim :)
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
Diyelimki şöyle bir php kodunuz var:
PHP:
/**************************************************************************************/
/* http://forum.iyinet.com/php/81349-vbseo-icin-memcached-yerine-xcache-kullanin.html */
/**************************************************************************************/

// Bu kod sorgu ile dönen tüm a ve b değerlerini lıst_a ve list_b arraylerine atıyor.

$list_a = $list_b = array();
$query = "select a,b from table where c=d";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
for($i=0;($i<$rows);$i++) {
    $data = mysql_fetch_assoc($result);
    $list_a[] = $data['a'];
    $list_b[] = $data['b'];
}
Buda Xcache versiyonu
PHP:
/**************************************************************************************/
/* http://forum.iyinet.com/php/81349-vbseo-icin-memcached-yerine-xcache-kullanin.html */
/**************************************************************************************/

// Bu kodda aynı işlemi Xcache kullanarak yapar

$list_a = $list_b = array();
$query = "select a,b from table where c=d";
$result_set_array = xcached_query($query,86400); // 1 gün cache de tut
$rows = count($result_set_array);
for($i=0;($i<$rows);$i++) {
    $list_a[] = $result_set_array[$i]['a'];
    $list_b[] = $result_set_array[$i]['b'];
}

function xcached_query($query,$expire) {
    $data = array();
    $key = md5($query);
    if(xcache_isset($key)) { // cache de ise al
        $data = unserialize(xcache_get($key));
    } else { // cache de değilse mySQL den al
        $result = mysql_query($query);
        $rows = mysql_num_rows($result);
        for($i=0;$i<$rows;$i++) {
            $data[$i] = mysql_fetch_assoc($result);
        }
        xcache_set($key, serialize($data), $expire);
    }
    return $data;
}
 

kralex

0
İyinet Üyesi
Katılım
23 Ocak 2008
Mesajlar
36
Reaction score
0
evet adminim zend i php.ini den kaldırdıktan sonra xcache aktif oldu.çok teşekkürler bu diğerinden daha az load ve ram harcıyor galiba öyle gözlemledim :)
 

Byturkx

0
İyinet Üyesi
Katılım
6 Şubat 2008
Mesajlar
64
Reaction score
0
İlk mesajdan kastım zaten xcache idi.Bu işlerde yeni olduğum için sorma isteğinde bulundum..

Ben sadece sorunumu dile getirdim.Yardımcı olmak zorunda değilsiniz tabi.

wget ile paketi çekiyorum ama

tar -zxf xcache-1.2.1.tar.gz

dediğimde yine usr/local/src# dizini çıkarıyor paketi açmıyor ..
 

Negative

0
İyinet Üyesi
Katılım
6 Kasım 2007
Mesajlar
16
Reaction score
0
Dediğiniz adımları uzun süredir kullanan biri olarak birşey merak ettim, vbulletin ve vbseo datastore xcache de ancak xcache sadece php cache yapıyor diye biliyorum normalde, mysql sorgularını da cache yapması için bir parametre giriyor muyuz yada ekleme yapacagimiz birşey?

Sql sorguları kendi cacheliyorsa, config.php de ayarladıgımızda , güzel ..

İyi Günler
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
Dediğiniz adımları uzun süredir kullanan biri olarak birşey merak ettim, vbulletin ve vbseo datastore xcache de ancak xcache sadece php cache yapıyor diye biliyorum normalde, mysql sorgularını da cache yapması için bir parametre giriyor muyuz yada ekleme yapacagimiz birşey?

Sql sorguları kendi cacheliyorsa, config.php de ayarladıgımızda , güzel ..

İyi Günler

Xcache php opcode cache yaninda variable da cacheleyebiliyor. php.ini icinde asagidaki degiskenleri bu sekilde ayarlarsaniz Xcacahe in variable cache ini de kullanabilirsiniz.
vbSEO xcache i destekliyor, kontrol panelinden bakabilirsiniz.
Ek olarak kendi scriptiniz de de degisken cacheleyebilirsiniz.

Ornegin: Bir store unuz var ve ana sayfadaki urunleri gostermek icin toplamad 20 sorgu yapmaniz gerekiyor. 20 sorgunun sonucunu 1 satligine cache e atarsaniz, onumuzdeki 1 saat boyunca bilgiler cacheden cekilir ve db sorgulari icin harcanan zaman + CPU + bellek harcanmamis olur.


xcache.var_size=16M
xcache.var_count=2
xcache.var_slots=1K
xcache.var_ttl=7200
xcache.var_maxttl=14400
xcache.var_gc_interval=300
 

AlwaysFc

0
İyinet Üyesi
Katılım
17 Eylül 2006
Mesajlar
1,040
Reaction score
3
phpon2.gif


versıyona baktım ama benım sunucuya uygun degıl sanırım 4.8 görünüyor.ben ne yapabılırım
 

AlwaysFc

0
İyinet Üyesi
Katılım
17 Eylül 2006
Mesajlar
1,040
Reaction score
3
tesekkurler ıyınet
sanırım baska server sart o zaman cunku load 45-50lerde hep:(
 

odin

0
İyinet Üyesi
Katılım
22 Nisan 2007
Mesajlar
89
Reaction score
1
Konum
Ankara
XCache 1.3 1.2.2 yada istediginizi kurabilir uygulayabilirsiniz. Litespeed kurdugunuzda bunlara gerek kalıyorsa sunucunuzu bir daha gözden geçirmenizi yada NGinx kurmanızı öneririm.
 

SeYH_SaMiL

0
İyinet Üyesi
Katılım
7 Mayıs 2011
Mesajlar
24
Reaction score
0
Merhaba,
Konuyu yeniliyorsam kusura bakmyın, xcache yi 1 dedicated sunucuya kurucamda, memcache de her bir forum için ayrı memcache kurulumu gerekiyordu, xcachede kurulan tek bir cacheyi sunucuda bulunan sitelerden vbulletin ve vbseo kullananların tümüne ekleyebilirmiyim yani her bir forum için ayrı olması gibi bir durum söz konusu değil değilmi.

Üzerinden uzun zaman geçmiş durumda şuan için vbulletin ve vbseo için öneriniz hala xcachemidir sunucumda cache olarak, xcache + eAccelerator kullanmam doğru olucak değilmi öneriniz bumudur acaba. Litespeed kullanıyorum ve;
root@ns1 [~]# php -v
PHP 5.2.9 (cli) (built: Mar 26 2011 14:07:56)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd., and
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
root@ns1 [~]#

Kurulu olanlar, lütfen fikir verirmisiniz cache konusunda, konu açılalı uzun zaman olması ve yeni bilgiler edinmiş olmanızdan ötürü sormak istedim.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst