2013-05-30 36 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

我找到了解决方案。问题是,供应商在没有任何通知的情况下更改了关税计划。新的资费计划限制了最大连接数量。

相关问题