Jaw*_*wen 6 .net c# stackexchange.redis asp.net-core-mvc .net-core
我正在将net 4库移植到net-core 1.0.0-preview 2
在开发我的net-core库时使用Stackexchange.Redis版本1.2.1,在net 4版本中使用1.2.0.
在net 4中,我的库在调用Redis命令时从未失败过.
在net-core中,我随机得到这个错误:
System.TimeoutException: Timeout performing GET netkey, inst: 6, queue: 10, qu: 0, qs: 10, qc: 0, wr: 0, wq: 0, in: 645, ar: 0, clientName: XXXXXX, serverEndpoint: Unspecified/XXXXXXX, keyHashSlot: XXXXX(Please take a look at this article for some common client-side issues that can cause timeouts: https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md)
at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server)
at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server)
at StackExchange.Redis.RedisDatabase.StringGet(RedisKey key, CommandFlags flags)
Run Code Online (Sandbox Code Playgroud)
更新我正在使用默认配置(连接超时,连接重试等)
更新添加了保持活动配置但仍然失败
有任何想法吗?
小智 5
更新的 SyncTimeout 不是一个好的选择,因为您的 redis 命令运行速度非常慢。超时的原因是线程池中的 .net-core 默认线程数太低。
只需在环境变量中设置 maxThreads 即可。
前任:
ComPlus_ThreadPool_ForceMaxWorkerThreads 1000 ComPlus_ThreadPool_ForceMinWorkerThreads 50
然后以管理员身份运行应用程序(允许应用程序读取系统环境变量)
这对我有用
解决方案:将 SyncTimeout 配置更新为 10000。尝试使用 5000 并失败,然后使用 10000 并修复。默认值为 1000。
| 归档时间: |
|
| 查看次数: |
2776 次 |
| 最近记录: |