2013-05-30 42 views
3

我已經制作了扭曲的服務。一切工作正常,直到我搬到新的服務器。現在,當收到新數據時,我的服務會丟失大部分連接。 舊服務器安裝了32位Windows XP,新服務器是帶有Windows Server 2008 64位的Intel服務器上的VMWare VM。 Python和扭曲版本在兩臺服務器上都是相同的。當新的數據收到套接字時,Windows會斷開連接

在這裏你可以看到問題的一個片段:

ConnectionLost reason is: Connection to the other side was lost in a non-clean fashion. 

Python版本是2.7.5,扭曲12.3

這是示例代碼:

# -*- coding: utf-8 -*- 
from twisted.internet import protocol, reactor 
from twisted.python import log 

class GreenProtocol(protocol.Protocol): 

def __init__(self): 
    self.ip = '' 
    self.port = 0 

def connectionMade(self): 
    self.ip = self.transport.getPeer().host 
    self.port = self.transport.getPeer().port 
    log.msg("[{0}:{1}] NEW CONNECTION".format(self.ip, self.port)) 

def dataReceived(self, data): 
    log.msg("[{0}:{1}] DATA".format(self.ip,   self.port))          

def connectionLost(self, reason): 
    log.msg("[{0}:{1}] CONNECTION LOST".format(self.ip, self.port)) 

class GreenFactory(protocol.ServerFactory): 
    protocol = GreenProtocol 

if __name__ == '__main__': 
    factory = GreenFactory() 
    reactor.listenTCP(5678, factory) 
    log.startLogging(DailyLogFile('log.txt', 'logs'), setStdout=False) 
    reactor.run() 

連接後建立每個客戶端發送消息。但是隻有5-10條消息中的一條被記錄。大多數客戶端在發送消息後丟失連接,並且服務器未收到該消息。

顯然,其原因是:

Connection to the other side was lost in a non-clean fashion: read error -- unknown (64) 

P.S:我想是不是twisteds故障,因爲當我用嗅探器聽我得到相同的結果。

P.P.S:大約有700個客戶端,只有70-100個客戶端可以發送數據,所有其他連接都被丟棄。

+2

這還不足以診斷您的問題。請用一個小程序重現內存泄漏,然後將此程序放在這裏。如果你*不能*再現漏洞或連接在一個小程序中的丟失,那麼你需要更好地理解你的大型程序。 – Glyph

+0

我已經添加了額外的解釋和服務器上使用的代碼 – zenio

+1

這段代碼如果我運行它什麼都不做。請附上*完整*程序。 http://sscce.org – Glyph

回答

1

我找到了解決方案。問題是,供應商在沒有任何通知的情況下更改了關稅計劃。新的資費計劃限制了最大連接數量。

相關問題