2017-02-01 94 views
7

Uygulama sunucularımızda, önbellek katmanımız için birden çok ters bellek için memcached sunucusuna (EC2 küçük örnekleri) bağlanmak üzere yerel olarak (soket aracılığıyla) iki yönlü bir PHP yığını çalıştırıyoruz.Twemproxy Lag Yeniden Başlatma Zorunluluğu

Her zaman, uygulama ekranımızdan, sayfa yükleme süresinin> 5 saniye sürdüğüne dair bir uyarı alırım. Bu durumda, hemen düzeltme, her uygulama sunucusunda twemproxy hizmetini yeniden başlatmaktır, bu bir güçlüktür.

Şu anda sahip olduğum tek düzeltme, her dakika çalışan ve hizmeti yeniden başlatan bir crontab'tır, ancak her saniyede bir hiçbir şey yazılmadığını hayal edebileceğiniz gibi, bu istenen, kalıcı bir çözüm değildir.

Daha önce bununla karşılaştı mı? Eğer öyleyse, düzeltme neydi? AWS Elasticache'ye geçmeyi denedim, ancak mevcut twemproxy çözümümüzle aynı performansa sahip değildi.

İşte twemproxy yapılandırmam.

# Note: We are using HA/twemproxy (nutcracker)/memcached proxy 
# So this isn't a default memcache(d) port 
# Each webapp will host the cache proxy, which allows us to connect via socket 
# which should be faster, as no tcp overhead 
# Hash has been manually override from default jenkins to FNV1A_64, which directly aligns with proxy 
port: 0 
<?php echo Hobis_Api_Cache::TYPE_VOLATILE; ?>: 
    options: 
    - <?php echo Memcached::OPT_HASH; ?>: <?php echo Memcached::HASH_FNV1A_64; ?><?php echo PHP_EOL; ?> 
    - <?php echo Memcached::OPT_SERIALIZER; ?>: <?php echo Memcached::SERIALIZER_IGBINARY; ?><?php echo PHP_EOL; ?> 
    servers: 
    - /var/run/nutcracker/nutcracker.sock 

Biz 0.4.1 twemproxy ve 1.4.25 memcached çalışan: Burada

default: 
    auto_eject_hosts: true 
    distribution: ketama 
    hash: fnv1a_64 
    listen: /var/run/nutcracker/nutcracker.sock 0666 
    server_failure_limit: 1 
    server_retry_timeout: 600000 # 600sec, 10m 
    timeout: 100 
    servers: 

    - vcache-1:11211:1 
    - vcache-2:11211:1 

Ve

php katmanı için bağlantı yapılandırma olduğunu.

Teşekkürler.

+0

Bu, crontab'ın –

cevap

0

ben localhost üzerinde TCP portuna unix soket geçiş sona erdi ve yeniden başlatma sorunu çözmüş gibi görünüyor olabilir. Ancak, tcp ile ilişkili ek yük nedeniyle, anahtarlama yaparken yanıt zamanında bir uptick fark ettim. Bu cevabı kabul etmemek için yolun aşağısındaki biri, soketler hakkında daha otoriter bir cevap yayınlayacaktır ...

1

Ben twemproxy ve memcached.but çok fazla bilmiyorum ama size daha fazla bilgi için bir bağlantı veririm.Ama size yararlı olacaktır.

https://github.com/twitter/twemproxy

+0

ayarlanması sorunudur. Repo'nun bir bağlantısı yardımcı olmaz, başlangıçta kodu aldım ve sahip olduğum konu hakkında hiç bir söz yok. –

+0

@MikePurcell soket bağlantıları, –

+0

@MikePurcell TCP soketlerinin kapalı olana kadar açık kalması olabilir. Aslında veri göndermeden kırık bir bağlantıyı (bir yönlendiricinin öldüğü gibi, kırılmış, tersine, vb.) algılamak çok zordur, bu yüzden çoğu uygulama, her zaman sık sık bağlantı yapmak için bir ping/pong reaksiyonu yapar hala hayatta. –

3

açık/bayat soket bağlantı sayısı sorunu

+0

Hmmm, istifleyebiliyorlar, buna bakacağım. –

+1

O yüzden OP'ye yardım etmemeli miydi? OP'yi bir çözüme yönlendirecek bir şeyi var, ama onu susturmayı mı tercih edersin? Yemin ederim Yığın Taşması, diğer insanların deneyimlerini mahvetmek isteyen narsislerle doludur ... OP bu yorumu almaktan mutluluk duyar ve Kiran onun fikrini vermek için elinden geleni yaptı, çünkü Stack yorum yapmasına izin vermez ... Yani lütfen Jorn ... Bırak ve bırak insanlar olsun. Bu insanlara yardım ettiğimiz bir site. Kiran'ın mesajı yardımcı oldu. Seninki her şeyden ama yardımcı olur. Kiran'ı geri çekiyorum. Dunno eğer meselesini çözecekse, ama yardım etmeye çalıştın - başkalarına karşı- –