2013-06-20 55 views
2

我收到此錯誤。什麼是工作?在ServiceStack.Redis.RedisNativeClient.Connect()在ServiceStack.Redis.RedisNativeClient.AssertConnectedSocket()
在ServiceStack.Redis.RedisNativeClient:Redis無法在繁忙負載中連接

無法連接在127.0.0.1:6379到Redis的實例>>堆棧跟蹤.SendCommand(Byte [] [] cmdWithBinaryArgs)at ServiceStack.Redis.RedisNative Client.SendExpectLong(Byte [] [] cmdWithBinaryArgs)at ServiceStack.Redis.RedisClientList.GetEnumerator()a t Common.Tools.RedisDBHelper.checkListInt(String myKey,Int32 id)>>內部異常:消息:無連接cou ld因目標機器主動拒絕而發生127.0.0.1:6379 >>內部異常:stacktra ce:在S ystem.Net.Sockets.Socket.Connect(IPAddress []地址,Int32端口)在System.Net.Sockets.Socket.Connect(Stri ng主機,Int32端口)在ServiceStack.Redis.RedisNativeClient.Connect ()CurrentStack:在System.Environment。 Common.Tools.E上的System.Environment.get_StackTrace()上的GetStackTrace(Exception e,Boolean needFileInfo) Common.Tools.RedisDBHelper.checkListInt(String myKey,Int32 id)xtensionHelper.saveAsDebug(Exception myEx,String aciklama)

+0

檢查下面我的意見。請確保首先啓動redis-server.exe,以便首先有一臺服務器連接到該服務器。 – cseder

回答

0

這是RedisClient無法創建TCP連接時發生的情況。拋出異常是這裏的正確行爲。

0

我自己有這個問題。 您使用的是Redis的二進制文件(從什麼來源,GitHub,非官方版本)?

我找到的原因是: 這實際上是Redis說它無法創建連接的方式。 (如提供的跟蹤也解釋) 應該是一個更清楚的例外,說明這是來自Redis而不是防火牆或任何IMHO。

我的猜測是,您在x64架構上運行32位構建的二進制文件。

如果您從鏈接下載版本:MsOpenTech Group 並使用MS C編譯器(如免費的VS 2012 Express)編譯它,您應該能夠運行生成的二進制文件,而不會出現此問題。

不能做出任何承諾,但這是對我有用。

編輯:此外,請確保啓動redis服務器(以管理員身份),並給予在防火牆neccesary權限,或者你將不會有服務器連接你的redis-cli客戶端!

1

我認爲這可能是Redis忙碌的負載。然後我認爲這是ServiceStack。但最終,Windows中的TCP發佈速度不夠快。在條目的值到期之前,TCP不會釋放已關閉的連接。我將TcpTimeWaitDelay設置爲45秒。 http://technet.microsoft.com/en-us/library/cc938217.aspx並設置MaxUserPort的http://mashijie.blogspot.com/2009/05/change-default-setting-of-tcp-ports.html

調整端口範圍1025-64511

確保您重新啓動Windows

參見:Redis connection/buffer-size limit exceeded