Twemproxy Lag强制重启

我们在本地使用twemproxy(通过套接字)的应用程序服务器上运行PHP堆栈,以连接到缓存层的多个上游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。

谢谢。


开放/过时套接字连接的数量可能是问题


我对twemproxy和memcached没有太多的了解,但我给出了一个链接给你以获取更多细节。可能会对你有所帮助。

https://github.com/twitter/twemproxy


我最终从本地主机上的unix套接字切换到TCP端口,似乎解决了重新启动问题。 但是,由于与tcp相关的开销,我确实注意到在制作交换机时响应时间有所增加。 不接受这个答案,希望有人在路上会发布一个关于套接字的更权威的答案......

链接地址: http://www.djcxy.com/p/94847.html

上一篇: Twemproxy Lag Forces a Restart

下一篇: 303/349 configuration