Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 大量请求时StackExchange.Redis超时_C#_Wcf_Redis_Stackexchange.redis - Fatal编程技术网

C# 大量请求时StackExchange.Redis超时

C# 大量请求时StackExchange.Redis超时,c#,wcf,redis,stackexchange.redis,C#,Wcf,Redis,Stackexchange.redis,我有一个使用StackExchange.Redis的分布式Web服务(WCF),每天大约有500万个请求 我多次遇到此错误(有时值可能不同): System.TimeoutException:执行SISSember KeyAllUsersFlag的超时,指令:7,队列:6,qu:0,qs:6,qc:0,wr:0,wq:0,in:20,ar:0,客户端名称:服务器,IOCP:(忙=20,空闲=3180,最小=2400,最大=3200),工作线程:(忙=7,空闲=793,最小=400,最大=800)

我有一个使用StackExchange.Redis的分布式Web服务(WCF),每天大约有500万个请求

我多次遇到此错误(有时值可能不同):

System.TimeoutException:执行SISSember KeyAllUsersFlag的超时,指令:7,队列:6,qu:0,qs:6,qc:0,wr:0,wq:0,in:20,ar:0,客户端名称:服务器,IOCP:(忙=20,空闲=3180,最小=2400,最大=3200),工作线程:(忙=7,空闲=793,最小=400,最大=800),本地CPU:不可用

在webconfig上,我有:

httpRuntime targetFramework=“4.6.1”minFreeThreads=“704”minLocalRequestFreeThreads=“608”

在机器配置上,我有:

processModel maxWorkerThreads=“100”maxIoThreads=“400”minWorkerThreads=“50”minIoThreads=“300”

关于多路复用器的配置,我有:

var configurationOptions = new ConfigurationOptions
{
    AbortOnConnectFail = false,
    SyncTimeout = 2000,
};

我能做些什么来优化对redis的调用,以获得快速响应而不出现此错误?

您可能会遇到与redis服务器建立连接的问题。正在通过TCP端口建立连接。单个源IP可以与单个目标IP和端口进行的最大TCP会话数为65535。这假设源IP中16位源端口范围(不包括0)中的每个可用源端口都已被利用。实际上,大多数操作系统仅从端口32768(0-65535范围后半部分中的最低数量)开始创建emphemeral源端口(客户端使用的端口类型),这意味着您最多可以与单个目标IP和侦听端口建立32768个连接。显然,其他资源限制可能会阻止这一点,但这是理论上的最大值。 长话短说-请确保在工作人员完成工作后关闭连接(SISMEMBER命令)。错误消息表示您有可用的工作人员,但他们无法建立到redis服务器的连接,并且由于客户端超时而失败。 请检查连接数,如果可用连接数不足,请在与redis的连接中使用keepAlive选项。您还可以使用connectTimeout选项设置连接操作的超时(毫秒),使用connectRetry设置初始连接命令期间重复连接尝试的次数。