- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在成功使用 ServiceStack PooledRedisClientManager。我现在正在将 Twemproxy 添加到组合中,并在单个 Ubuntu 服务器上运行 4 个以 Twemproxy 为前端的 Redis 实例。
这导致轻负载测试(100 个用户)通过 ServiceStack 连接到 Redis 时出现问题。我已经尝试了原始的 PooledRedisClientManager 和 BasicRedisClientManager,两者都给出了错误No connection could be because the target machine actively refused it
我需要做些什么才能让这两个人一起玩得开心吗?这是 Twemproxy 配置
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。
最佳答案
我之前没有使用过 twemproxy,但我会说你的服务器列表是错误的。我不认为你在使用 0.0.0.0
正确。
您的服务器需要(用于本地测试):
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 监听服务器上所有可用的网络接口(interface)。这意味着 twemproxy 将尝试监听:
当您指定服务器时,服务器配置需要知道它应该连接的实际地址。 0.0.0.0
没有意义。它需要一个真正的值(value)。所以当你来使用不同的Redis机器时你会想要使用,每台机器的私有(private)IP是这样的:
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。如果您的 IP 不是静态分配的,则可能值得使用主机名。
正如您所说,您仍然遇到问题,我会提出以下建议:
删除 auto_eject_hosts: true
.如果你获得了一些连接,那么一段时间后你最终没有连接,这是因为某些东西导致 twemproxy 认为 Redis 主机有问题并拒绝它们。
因此,最终当您的 ServiceStack 客户端连接到 twemproxy 时,将没有主机可以将请求传递到,您会收到错误 No connection could be made because the target machine actively refused it
.
您是否真的有足够的 RAM 来以这种方式对您的本地计算机进行压力测试?您正在运行至少 4 个 Redis 实例,它们需要实际内存来存储值,twemproxy 消耗大量内存来缓冲它传递给 Redis 的请求,这个内存池永远不会被释放,see here for more information .您的 ServiceStack 应用程序将消耗内存 - 在 Debug模式下更是如此。您可能会打开 Visual Studio 或其他 IDE、压力测试应用程序和您的操作系统。最重要的是,您可能还没有关闭后台进程和其他应用程序。
A good practice is to try to run tests on isolated hardware as far as possible. If it is not possible, then the system must be monitored to check the benchmark is not impacted by some external activity.
您应该阅读 Redis article here关于基准测试。
因为您在 localhost
中使用它情况使用 BasicRedisClientManager
不是 PooledRedisClientManager
.
关于redis - 将 ServiceStack Redis 与 Twemproxy 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345874/
我创建了派生自的服务 ServiceStack.ServiceInterface.Service 实现一些请求。此服务实例的生命周期是多少 - 例如每次调用是否创建了一个新实例,或者该实例是否被缓存?
是否存在检测代码模型中的更改并自动重新创建数据库的首选方法?我不需要迁移数据,如果有更改,可以完全删除所有表,从模型中重新创建表,并使用代码中的初始数据集填充新表,这样就可以了。 与此相关:使用Ser
我正在尝试为 ServiceStack 服务创建一个自定义属性,我可以使用它来控制服务类中的每个方法。 这是我正在实现的属性类。 [AttributeUsage(AttributeTargets.Me
我在玩 ServiceStack,想知道它是否支持这种情况。我在我的请求类型中使用了泛型,这样许多从公共(public)接口(interface)继承的 DTO 将支持相同的基本方法 [比如... G
ServiceStack 服务中是否有任何机制来返回流/大型二进制数据? WCF 的 MTOM 支持虽然笨拙,但在返回大量数据而没有文本转换开销方面很有效。 最佳答案 我喜欢服务堆栈,这个小代码足以从
我很惊讶地发现没有关于这个主题的文档,有人知道 OrmLite 是否支持开放式并发吗?欢迎提供任何文档或示例引用。 最佳答案 这真的不取决于 OrmLite。这取决于隔离级别和您的数据库设置。 例子:
最近在做servicestack项目。当我尝试在项目中添加 open ServiceStack.ServiceInterface 时,它显示以下错误。 代码的 PFB 图片。 正如错误建议的那样,当我
我将如何使用 servicestack 处理静态文件? 我想添加一个像 Routes.Add(/app) 这样的路由,当客户端为此路径发出 GET 时,我需要返回一个 Silverlight xap
这类似于问题 Set Cache-Control: no-cache on GET requests ,这并没有真正得到回答。 在 API 响应中,缓存控制 header 被设置为私有(private
我刚刚进入 REST 和 ServiceStack,现在我的 GET 正在返回可能是 XML 或 Json 的字符串。 我现在需要处理更改我的域模型的 PUT 或 POST 命令。 对于单个资源,我的
一段时间以来,我们一直在将 ServiceStack 用于基于 REST 的服务,到目前为止,效果非常好。 我们所有的服务都写成: public class MyRestService : RestS
我读过@mythz 的这篇文章 https://stackoverflow.com/a/12413091/1095655 , 但我的声誉不够高,无法发表评论 我有一个问题正在工作。如果您收到带有版本
关于通用类型响应对象的文档,我遇到了 Swagger 的 ServiceStack 实现问题。强类型的响应对象被正确记录和显示,但是一旦通用类型的对象用作响应,文档就会不准确且具有误导性。 请求 DT
我目前正在研究一个解决方案,其中我们有一个自托管的 ServiceStack 层正在运行,但问题是当我从浏览器访问它并且浏览器尝试获取 favicon 时,我不断收到错误消息。据我所知,在运行自托管时
我正在查看 ServiceStack 中单元测试的源代码 TestHostBase.cs - 并让它与我自己的项目一起运行。在单元测试时如何在不实际启动监听器的情况下启用我的插件?例如,我想测试我的
ServiceStack 服务非常适合响应 Accept header 中请求的内容类型。但是如果我需要在请求过滤器中尽早关闭/结束响应,有没有办法用正确的内容类型进行响应?我在请求过滤器中所能访问的
我有一个 FileSystemBlobProvider 需要将物理路径映射到虚拟路径,反之亦然。我还需要访问主机名(我需要在给定应用程序相对路径的情况下生成公共(public) url)。理想情况下,
我阅读了新维基 Modularizing Services在 ServiceStack 页面上。我没有发现如何在插件中注册多个服务。当然我可以用appHost.Register(typeof(MySe
我想在重定向中保持状态并且想在重定向中保持一些状态。我认为 MVC 中的 TempData 会在 Rails 中执行此操作并闪烁消息。 ServiceStack 中的任何等效功能。我想在自己组装之前先
从 asp.net 网站调用 servicestack API 的最佳方法是什么。服务正在 IIS 中运行。服务堆栈中的所有方法都需要先进行身份验证。 我尝试使用 JsonServiceClient
我是一名优秀的程序员,十分优秀!