我经常得到 ServiceStack.Redis:无法连接:sPort:0或ServiceStack.Redis:无法连接:sPort:50071(或其他端口号)。
这似乎发生在我们的网站比较繁忙时。 Redis本身看起来很好,没有真正增加CPU或内存使用量。
我正在使用连接池,并尝试更改超时值但未成功。
public sealed class RedisConnection
{
// parameter values are:
// Config.Settings.RedisPoolSize = 10000
// Config.Settings.RedisPoolTimeoutSeconds = 2
// Config.Settings.RemoteCacheServerName = 192.168.10.12
private static readonly PooledRedisClientManager instance
= new PooledRedisClientManager(Config.Settings.RedisPoolSize,
Config.Settings.RedisPoolTimeoutSeconds,
new string[] { Config.Settings.RemoteCacheServerName })
{
ConnectTimeout = 1500
};
static RedisConnection()
{
}
public static PooledRedisClientManager Instance
{
get
{
return instance;
}
}
}
用法是这样的:
public sealed class Caching
{
public static T GetCacheSingle<T>(string key)
{
using (var redisClient = RedisConnection.Instance.GetReadOnlyClient())
{
var value = redisClient.Get<byte[]>(key);
....
}
}
}
答案 0 :(得分:3)
这是由于Redis在作为Hyper-V上的虚拟机托管的Ubuntu上运行而导致的延迟问题。
我们通过迁移到物理Linux机箱来解决问题,从而将延迟降低了45%。