Python SSL Socket在一段时间后死亡

时间:2017-11-17 15:37:58

标签: python python-3.x sockets ssl

我写了一个扩展HTTPServerBaseHTTPRequestHandler的小型python服务器。另外,我正在使用标准的python ssl库来包装我的套接字。服务器将一个套接字暴露给内部网络,其中请求定期到达,一个套接字公开。

现在我遇到了一个奇怪的问题,即在看似随机的时间之后,公共套接字“死亡”。这意味着它将丢弃任何发送给它的数据而不作出反应,不可能进行进一步的SSL握手,并且每次连接尝试都不会返回。

为了解决这个问题,我编写了一个由cron触发的脚本,并使用unix timeoutcurl来识别死状态并重启服务器。但是,我当然希望找到这种行为的原因。

如果有人能指出我的方向或告诉我在哪里可以进行额外的记录,我会很高兴。据我所知,插座在最后一次连接后通常会在1-10级内死亡,但有时也可以在没有任何请求的情况下存活一整天。超过一周可以毫无问题地通过,或者它可以一天三次死亡。通常,每天至少有一些连接,在峰值处每隔几秒就有一些连接。

我认为发生了一些源于断开的SSL连接的exeptions,但是没有一个可以链接到套接字死亡。我97%肯定这不是我的代码的问题,我做了大量的检查和日志记录(我希望事先有一些合理的思考),并且如前所述,在私有套接字上有定期成功的连接处理,这意味着服务器并没有整体死亡。值得一提的是服务器使用python ThreadingMixIn进行多线程处理,但由于处理私有连接的代码使用的资源与公共资源相同,因此没有死锁。我知道服务器已暴露在互联网上,所以我也进行了一些渗透测试,其中没有任何东西可以通过这种方式降低服务器。

如果有人有个主意,我会非常高兴! 提前谢谢!

0 个答案:

没有答案