Twemproxy 延迟强制重启
Twemproxy Lag Forces a Restart
我们在我们的应用程序服务器上 运行 一个 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
这里是 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
我们是 运行 0.4.1 twemproxy 和 1.4.25 memcached。
谢谢。
打开/失效的套接字连接数可能是问题所在
我最终从 unix 套接字切换到本地主机上的 tcp 端口,它似乎已经解决了重启问题。但是,由于与 tcp 相关的开销,我确实注意到在进行切换时响应时间有所增加。不接受这个答案,希望有人会 post 关于套接字的更权威的答案...
我们在我们的应用程序服务器上 运行 一个 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
这里是 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
我们是 运行 0.4.1 twemproxy 和 1.4.25 memcached。
谢谢。
打开/失效的套接字连接数可能是问题所在
我最终从 unix 套接字切换到本地主机上的 tcp 端口,它似乎已经解决了重启问题。但是,由于与 tcp 相关的开销,我确实注意到在进行切换时响应时间有所增加。不接受这个答案,希望有人会 post 关于套接字的更权威的答案...