群集无法访问时,StackExchange.Redis内存泄漏

时间:2014-10-10 14:01:35

标签: c# memory-leaks redis high-availability stackexchange.redis

我正在尝试将StackExchange.Redis客户端集成到我的解决方案中以进行请求记录。

高可用性至关重要,因此日志记录组件必须能够承受网络故障和潜在的redis集群中断。精度不是必不可少的,所以我正在使用" Fire&忘记"模式。

为了测试网络中断情况,我使用以下代码创建了一个测试Web应用程序:

namespace WebApplication1
{
    public static class Logger
    {
        private static readonly IDatabase _db;

        static Logger()
        {
            var configurationOptions = new ConfigurationOptions();
            configurationOptions.AbortOnConnectFail = false;
            configurationOptions.ConnectRetry = 1;
            configurationOptions.ConnectTimeout = 100;
            configurationOptions.EndPoints.Add("test.example.com", 6379);

            var redis = ConnectionMultiplexer.Connect(configurationOptions);
            _db = redis.GetDatabase();
        }

        public static void Push()
        {
            _db.ListRightPush("key", "value", When.Always, CommandFlags.FireAndForget);
        }
    }

    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Logger.Push();
        }
    }
}

...使用Apache Bench以50k请求命中它。 在达到1.1GB的工作集后,本地IIS崩溃了。

这完全不是我所期望的,因为它被配置为仅重试一次并在100ms后超时。

我是否错误配置了它?

0 个答案:

没有答案