我已经在python和eventlet邮件列表上发布过了,所以如果我觉得不耐烦,我很抱歉。在
我在一个小型(非微型)保留的ubuntu11.10aws实例上运行eventlet0.9.16。在
我有一个socketserver,它类似于eventlet文档中示例中的echo服务器。当我第一次开始运行代码时,一切似乎都很好,但我注意到10到15个小时后,cpu使用率从大约1%增加到99+%。此时,我无法进一步连接到socketserver。在
这是我正在运行的代码:def socket_listener(self, port, socket_type):
L.LOGG(self._CONN, 0, H.func(), 'Action:Starting|SocketType:%s' % socket_type)
listener = eventlet.listen((self._host, port))
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
pool = eventlet.GreenPool(20000)
while True:
connection, address = listener.accept()
connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
L.LOGG(self._CONN, 0, H.func(), 'IPAddress:%s|GreenthreadsFree:%s|GreenthreadsRunning:%s' % (str(address[0]), str(pool.free()),str(pool.running())))
pool.spawn_n(self.spawn_socketobject, connection, address, socket_type)
listener.shutdown(socket.SHUT_RDWR)
listener.close()
LOGG方法只需将提供的参数记录到mysql表中。在
我在运行socket_侦听器的线程如下:
^{pr2}$