如何调查cherrypy碰撞?

如何调查cherrypy碰撞?,cherrypy,Cherrypy,我们有一个cherrypy服务,它集成了几个后端web服务。在负载测试期间,cherrypy过程在一段时间(45分钟)后定期崩溃。我们知道瓶颈是我们正在使用的后端web服务。在崩溃之前,我们在访问后端服务时看到500和503个错误,但我不明白为什么cherrypy本身会崩溃(整个过程都被终止)。你能告诉我如何调查问题所在吗?有没有可能线程轮询(50)正在排队等待太多的请求?在我年轻的时候,有一次它崩溃了。我指的是由segfault引起的Python进程崩溃。当我调查它时,我发现我弄乱了MySQL

我们有一个cherrypy服务,它集成了几个后端web服务。在负载测试期间,cherrypy过程在一段时间(45分钟)后定期崩溃。我们知道瓶颈是我们正在使用的后端web服务。在崩溃之前,我们在访问后端服务时看到500和503个错误,但我不明白为什么cherrypy本身会崩溃(整个过程都被终止)。你能告诉我如何调查问题所在吗?有没有可能线程轮询(50)正在排队等待太多的请求?

在我年轻的时候,有一次它崩溃了。我指的是由segfault引起的Python进程崩溃。当我调查它时,我发现我弄乱了MySQLdb连接,将它们缓存在CherryPy线程可交换访问的对象中。因为MySQLdb连接不是线程安全的,所以只能从中创建的线程访问它。此外,由于涉及并发,崩溃似乎是不确定的,只出现在负载测试中。因此,负载测试可以在这里作为调试工具——try或(Pythonic)

当进程崩溃时,您可以指示Linux编写一个具有堆栈跟踪的核心转储(例如,在我的示例中,在MySQLdb C-code端)。不管对您(对我)来说是多么陌生的低级C环境,堆栈跟踪可以帮助您找到导致崩溃的库,或者至少缩小可疑对象的范围。这是


我还想指出,不太可能的问题是在CherryPy。实际上,它非常稳定。

在我早年的樱桃色日子里,我曾经让它崩溃过一次。我指的是由segfault引起的Python进程崩溃。当我调查它时,我发现我弄乱了MySQLdb连接,将它们缓存在CherryPy线程可交换访问的对象中。因为MySQLdb连接不是线程安全的,所以只能从中创建的线程访问它。此外,由于涉及并发,崩溃似乎是不确定的,只出现在负载测试中。因此,负载测试可以在这里作为调试工具——try或(Pythonic)

当进程崩溃时,您可以指示Linux编写一个具有堆栈跟踪的核心转储(例如,在我的示例中,在MySQLdb C-code端)。不管对您(对我)来说是多么陌生的低级C环境,堆栈跟踪可以帮助您找到导致崩溃的库,或者至少缩小可疑对象的范围。这是


我还想指出,不太可能的问题是在CherryPy。它实际上非常稳定。

CherryPy崩溃时会抛出异常吗?您是否在任何地方使用多处理队列?CherryPy崩溃时是否抛出任何异常?您是否在任何地方使用多处理队列?