首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ServiceStack Redis和Twemproxy

使用ServiceStack Redis和Twemproxy
EN

Stack Overflow用户
提问于 2014-01-25 02:33:14
回答 1查看 1.1K关注 0票数 2

我一直在成功地使用ServiceStack PooledRedisClientManager。我现在将Twemproxy添加到mix中,并在单个Ubuntu服务器上运行Twemproxy的4个Redis实例。

这给通过ServiceStack连接到Redis的轻负载测试(100个用户)带来了问题。我尝试了原始的PooledRedisClientManager和BasicRedisClientManager,它们都给了错误无法连接,因为目标机器主动拒绝了

我需要做些什么才能让这两个人和睦相处?这是Twemproxy配置

代码语言:javascript
复制
alpha:
  listen: 0.0.0.0:12112
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  redis: true
  timeout: 400
  server_retry_timeout: 30000
  server_failure_limit: 3
  server_connections: 1000
  servers:
   - 0.0.0.0:6379:1
   - 0.0.0.0:6380:1
   - 0.0.0.0:6381:1
   - 0.0.0.0:6382:1

我可以单独连接到每个Redis服务器实例,它只是通过Twemproxy失败了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-25 09:09:51

我以前没有使用过双代理,但我会说您的服务器列表是错误的。我不认为你使用0.0.0.0是正确的。

您的服务器需要(用于本地测试)

代码语言:javascript
复制
servers:
 - 127.0.0.1:6379:1
 - 127.0.0.1:6380:1
 - 127.0.0.1:6381:1
 - 127.0.0.1:6382:1

您可以在0.0.0.0命令上使用listen命令告诉twemproxy 侦听服务器上所有可用的网络接口。这意味着双代理将尝试侦听:

  • 环回地址127.0.0.1 (本地主机),
  • 你的私人知识产权(即192.168.0.1)和
  • (即134.xxx.50.34)

当您指定服务器时,服务器配置需要知道它应该连接的实际地址。0.0.0.0没有道理。它需要一个真正的价值。因此,当您使用您想要使用的不同的Redis机器时,每台机器的私有IP如下:

代码语言:javascript
复制
servers:
 - 192.168.0.10:6379:1
 - 192.168.0.13:6379:1
 - 192.168.0.14:6379:1
 - 192.168.0.27:6379:1

很明显你的IP地址会不一样。您可以使用ifconfig来确定每台机器上的IP。不过,如果没有静态分配您的it,则使用主机名可能是值得的。

更新:

正如你刚才所说,你仍有问题,我会提出以下建议:

  1. 删除auto_eject_hosts: true。如果您获得了一些连接,那么当您最终没有连接时,这是因为某些原因导致双代理认为Redis主机有问题,并拒绝它们。 因此,最终当您的ServiceStack客户端连接到双代理时,将不会有任何主机将请求传递给您,您将得到错误的No connection could be made because the target machine actively refused it
  2. 你真的有足够的内存来用这种方式来测试你的本地机器吗?您正在运行至少4个Redis实例,这些实例需要真正的内存来存储值,双代理将消耗大量内存来缓冲它传递给Redis的请求,这个内存池从未被释放,有关更多信息,请参见这里。您的ServiceStack应用程序将消耗内存-更多的在调试模式。您可能会打开Visual或其他IDE、压力测试应用程序和操作系统。最重要的是,您可能还没有关闭后台进程和其他应用程序。 一个好的做法是尽量在孤立的硬件上运行测试。如果不可能,则必须对系统进行监视,以检查基准不受某些外部活动的影响。

您应该阅读关于基准测试的这里的红色文章

  1. 当您在localhost中使用这个时,使用的是BasicRedisClientManager而不是PooledRedisClientManager
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21345874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档