Mik*_*ell 7 php memcached caching twemproxy
我们在我们的app服务器上运行PHP堆栈,它在本地使用twemproxy(通过套接字),连接到我们的缓存层的多个上游memcached服务器(EC2小实例).
我经常从应用监视器收到一个警告,即页面加载时间大于5秒.发生这种情况时,立即修复是在每个应用服务器上重新启动twemproxy服务,这是一个麻烦.
我现在唯一的解决方案是每分钟运行一次crontab并重新启动服务,但是你可以想象每分钟都没有写几秒钟,这不是一个理想的永久解决方案.
有没有人遇到过这个?如果是这样,修复了什么?我尝试切换到AWS Elasticache但它没有与我们当前的twemproxy解决方案相同的性能.
这是我的twemproxy配置.
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
Run Code Online (Sandbox Code Playgroud)
这是php层的连接配置:
# 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
Run Code Online (Sandbox Code Playgroud)
我们运行0.4.1 twemproxy和1.4.25 memcached.
谢谢.
我最终从本地主机上的 unix 套接字切换到 tcp 端口,它似乎已经解决了重新启动问题。然而,由于与 tcp 相关的开销,我确实注意到进行切换时响应时间有所增加。不接受这个答案,希望有人能发布有关套接字的更权威的答案......