2017-05-22 49 views
0

試圖從我的緩存中刪除時,我收到以下錯誤:即使增加超時之後,stackexchange.redis仍會引發超時?

Timeout performing DEL test.com, inst: 0, mgr: ExecuteSelect, err: never, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, clientName: ORLWS052, serverEndpoint: Unspecified/pub-redis-16778.us-west-2-1.1.ec2.garantiadata.com:16778, keyHashSlot: 6928, IOCP: (Busy=3,Free=997,Min=4,Max=1000), WORKER: (Busy=4,Free=4091,Min=4,Max=4095), Local-CPU: 100% (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)

更新時,我也得到一個類似的超時。

我不知道該如何閱讀,所以如果有人知道這將有所幫助。

我試圖更新或刪除的密鑰的大小是5515字節。

我也跑了slowlog get命令再沒有(長度爲0)

我也試圖增加超時,但沒有工作,要麼

回答

1

IOCP: (Busy=3,Free=997,Min=4,Max=1000), WORKER: (Busy=4,Free=4091,Min=4,Max=4095), Local-CPU: 100%

請檢查你的ICOP,WORKER忙線程和最小線程。此外,CPU是100%。 timeoutHelpLink已在最新版本中更新。

https://stackexchange.github.io/StackExchange.Redis/Timeouts

如果我們看一下從StackExchange.Redis爲例錯誤消息(建立 1.0.450或更高版本),你會看到,它現在打印線程池的統計數據(見下文IOCP和工人細節) 。

System.TimeoutException: Timeout performing GET MyKey, inst: 2, mgr: Inactive, queue: 6, qu: 0, qs: 6, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, IOCP: (Busy=6,Free=994,Min=4,Max=1000), WORKER: (Busy=3,Free=997,Min=4,Max=1000)

在上面的例子中,可以看到,對於IOCP線程有6個 忙螺紋和系統被配置成允許4個最小線程。 在這種情況下,客戶端將可能已經看到了兩個500毫秒的延遲 因爲6> 4

注意StackExchange.Redis能打到超時如果任 IOCP或工作線程的增長被扼殺。

建議:鑑於上述信息,建議將IOCP和WORKER線程的最低配置值設置爲 ,大於默認值 。對於這個值應該是什麼,我們不能給出一個通用的指導 指導,因爲一個 應用的正確值對另一個應用來說太高/太低。此設置 也可能會影響複雜應用程序的其他部分的性能,因此您需要根據您的具體需求對此設置進行微調。一個好的開始地點是200或300,然後測試和調整爲 需要。

+0

嗨,感謝您的意見。我在哪裏可以更改這些設置?代碼的哪一部分?你是怎麼想到2 500毫秒的延遲? min以上的每個線程都是500ms嗎? – xaisoft

+0

@xaisoft你檢查鏈接嗎? – Sreejith

+0

是的,事後我看到了。謝謝。 – xaisoft