php - Twemproxy 延迟强制重启

标签 php caching memcached twemproxy

我们在我们的应用程序服务器上运行一个 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。

谢谢。

最佳答案

打开/失效套接字连接的数量可能是问题所在

关于php - Twemproxy 延迟强制重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41989898/

相关文章:

php - 缓慢的 PHP session

javascript - 无法使用ajax和php上传多个文件

java - Java Hibernate二级缓存默认启用吗?

php - 如何检索社交网站的自定义用户搜索结果

javascript - 为什么这些 CSS 文件被下载了两次?

java - hibernate/JPA 中基于缓存和基于查询的分页的混合

amazon-web-services - 使用 websocket 连接的客户端连接到 memcached

php - 显示两个定义的用户组的我的内容

php - PHP和Mysql查询,使用PHP将行转换为列

php - 向 PHP MYSQL 函数添加 If/else 错误/成功消息