etil alkol rp satın al
chat eczaonline.com

vbSEO icin memcached yerine Xcache kullanın

iyinet

Administratör
Katılım
2 Eyl 2002
Mesajlar
5,021
Beğeniler
53
Konum
Gaziantep
#1
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

Şen Üye
Katılım
23 Ocak 2008
Mesajlar
36
Beğeniler
0
#2
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

Administratör
Katılım
2 Eyl 2002
Mesajlar
5,021
Beğeniler
53
Konum
Gaziantep
#3
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

Şen Üye
Katılım
23 Ocak 2008
Mesajlar
36
Beğeniler
0
#4
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
 

atay

Müptela
Katılım
29 Eki 2005
Mesajlar
3,592
Beğeniler
37
#6
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

Administratör
Katılım
2 Eyl 2002
Mesajlar
5,021
Beğeniler
53
Konum
Gaziantep
#7
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

Müptela
Katılım
29 Eki 2005
Mesajlar
3,592
Beğeniler
37
#8
ç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

Administratör
Katılım
2 Eyl 2002
Mesajlar
5,021
Beğeniler
53
Konum
Gaziantep
#9
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

Şen Üye
Katılım
23 Ocak 2008
Mesajlar
36
Beğeniler
0
#10
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

Şen Üye
Katılım
6 Şub 2008
Mesajlar
64
Beğeniler
0
#12
İ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

Pratik Üye
Katılım
6 Kas 2007
Mesajlar
16
Beğeniler
0
#13
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

Administratör
Katılım
2 Eyl 2002
Mesajlar
5,021
Beğeniler
53
Konum
Gaziantep
#14
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
 
Katılım
17 Eyl 2006
Mesajlar
1,040
Beğeniler
3
#15


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
 

odin

Şen Üye
Katılım
22 Nis 2007
Mesajlar
89
Beğeniler
1
Konum
Ankara
#19
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

Pratik Üye
Katılım
7 May 2011
Mesajlar
24
Beğeniler
0
#20
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;
[email protected] [~]# 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
[email protected] [~]#

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

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 1)

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. iyinet.com sayfalarında yer alan yazı, görsel ve linklerle ilgili hukuki şikayetleriniz için Buradan iletişime geçmeniz durumunda, ilgili kanunlar ve yönetmelikler çerçevesinde en geç 7 gün içerisinde iyinet yönetimince tarafınıza dönüş sağlanacaktır. Betcup porno Artemisbet Forum canlı bahis sohbet - - chat
Üst