# ----------------------------------------------------------------------------- # MEMCACHE NOTLARI # ----------------------------------------------------------------------------- Debian Jessie ile denendi. # ----------------------------------------------------------------------------- # Yükleme # ----------------------------------------------------------------------------- apt-get install memcached apt-get install python-memcache apt-get install php5-memcache apt-get install php5-memcached # php5-memcache alternatif apt-get install telnet # istatistiklere konsoldan bakmak icin # ----------------------------------------------------------------------------- # Ayarlar # ----------------------------------------------------------------------------- Servisin ayarları /etc/memcached.conf içinden yapılıyor. # Dinlenecek IP adresi -l 127.0.0.1 -l 10.10.10.10 -l 0.0.0.0 # ----------------------------------------------------------------------------- # Python ile memcache # ----------------------------------------------------------------------------- #!/usr/bin/python import memcache servers = ['127.0.0.1:11211', '127.0.0.1:11212'] memc = memcache.Client(servers, debug=1) key = memc.get('key1001') if not key: print("memcache'de yok") value = 'value1001' memc.set('key1001', value, 20) else: print("memcache'de var") value = memc.get('key1001') print(value) # Python memcache komutları Memcache'e kaydedilirken değerler otomatik olarak serileştirilir. Client(sunucu_listesi) get(key) -> Değer yoksa None gelir. set(key, value, [expire]) -> expire süresi boyunca değer saklanır. 0 olursa expire olmaz. expire süresi 30 günden (30*24*60*60) fazla ise epoch değeri olarak kabul edilir. delete(key, [time]) -> time süresince değer saklanır ve sonra silinir. Bu süre boyunca değer değiştirilemez. incr(key, [value]) -> Değeri value değeri kadar arttırır. decr(key, [value]) -> Value verirmezse 1 artar. # ----------------------------------------------------------------------------- # PHP Session kayıtlarının paylaştırılması # ----------------------------------------------------------------------------- PHP-FPM kullanıldığı varsayıldı. # /etc/hosts 10.0.0.1 mcache1.srv.loc 10.0.0.2 mcache2.srv.loc # /etc/php5/fpm/php.ini session.save_handler = memcached session.save_path = "mcache1.srv.loc:11211,mcache1.srv.loc:11211" # /etc/php5/mods-available/memcache.ini Failover ve redundancy için aşağıdaki ayarları eklemek gerekiyor. "session_redundancy" değeri olarak "memcache sunucu sayısı + 1" girmek gerekmekte. memcache.allow_failover=1 memcache.session_redundancy=3 # Session testi # ----------------------------------------------------------------------------- # Memcached istatistikleri # ----------------------------------------------------------------------------- Telnet ile IP ve port belirterek bağlanılabilir. # Bağlantı telnet 127.0.0.1 11211 # stats STAT pid 17110 -> pid STAT uptime 190 -> Oturum süresi STAT time 1321789537 -> Epoch time STAT version 1.4.5 -> Sürüm STAT pointer_size 32 STAT rusage_user 0.008000 -> Oturum için toplam user süresi STAT rusage_system 0.056003 -> Oturum için toplam sistem süresi STAT curr_connections 5 -> Açık bağlantı sayısı STAT total_connections 13 -> Oturum için yapılan toplam bağlantı sayısı STAT connection_structures 7 STAT cmd_get 12 -> Oturum için toplam get komutu sayısı STAT cmd_set 2 -> Oturum için toplam set komutu sayısı STAT cmd_flush 0 -> Oturum için toplam flush komutu sayısı STAT get_hits 10 -> Oturum için depodan cevaplanan get sayısı STAT get_misses 2 -> Oturum için cevaplanamayan get sayısı STAT delete_misses 0 -> Oturum için gerçekleştirilen delete sayısı STAT delete_hits 0 -> Oturum için key'i olmayan delete sayısı STAT incr_misses 0 -> Oturum için key'i olmayan incr sayısı STAT incr_hits 5 -> Oturum için gerçekleştirilen incr sayısı STAT decr_misses 0 -> Oturum için key'i olmayan decr sayısı STAT decr_hits 0 -> Oturum için gerçekleştirilen decr sayısı STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 335 -> Memcached'in ağdan okuduğu veri miktarı STAT bytes_written 4305 -> Memcached'in ağa yazdığı veri miktarı STAT limit_maxbytes 67108864 -> Memcached'in kaydedebileceği maksimum veri miktarı STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT bytes 60 -> Kayıtlı değerleri saklamak için kullanılan alan boyutu STAT curr_items 1 -> Kayıtlı değer sayısı STAT total_items 2 -> Oturum için toplam kaydedilen değer sayısı STAT evictions 0 -> Oturum için hafızayı boşaltmak için kaç geçerli değerin silindiği STAT reclaimed 0 END # stats slabs STAT 1:chunk_size 80 -> Her chunk için ayrılan alan miktarı STAT 1:chunks_per_page 13107 -> Her sayfadaki chunk sayısı STAT 1:total_pages 1 -> Toplam sayfa sayısı STAT 1:total_chunks 13107 -> Toplam chunk sayısı STAT 1:used_chunks 1 -> Kullanılan chunk sayısı STAT 1:free_chunks 0 -> Boş chunk sayısı STAT 1:free_chunks_end 13106 -> Son sayfanın sonundaki toplan boş chunk miktarı STAT 1:mem_requested 60 -> İhtiyaç duyulan gerçek RAM alanı STAT 1:get_hits 10 -> Toplam get sayısı STAT 1:cmd_set 2 -> Toplam set sayısı STAT 1:delete_hits 0 -> Toplam delete sayısı STAT 1:incr_hits 5 -> Toplam incr sayısı STAT 1:decr_hits 0 -> Toplam decr sayısı STAT 1:cas_hits 0 STAT 1:cas_badval 0 STAT active_slabs 1 -> Aktif slabs sayısı STAT total_malloced 1048560 -> Slab sayfaları için ayrılan toplam hafıza alanı END # stats items STAT items:1:number 1 -> Kayıtlı olan değer sayısı STAT items:1:age 1958 -> En eski değerin saniye olarak yaşı STAT items:1:evicted 0 -> Alan yaratmak için silinen değer sayısı STAT items:1:evicted_nonzero 0 -> Son geçerli değer silme zamanı (nonzero) STAT items:1:evicted_time 0 -> Son geçerli değer silme zamanı STAT items:1:outofmemory 0 -> Hafıza yetersiz sonucu alan değer sayısı STAT items:1:tailrepairs 0 STAT items:1:reclaimed 0 END # stats sizes STAT 64 1 -> (Boyut, adet) çifti END # quit # ----------------------------------------------------------------------------- # KAYNAKLAR # ----------------------------------------------------------------------------- https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcached-servers-on-ubuntu-14-04