Python 在 futex 调用中挂起

Hel*_*hne 2 python debugging multithreading deadlock futex

我有一个在生产环境中运行的 Python 守护进程。它使用 7 到 120 个线程。最近,最小的实例(7 个线程)开始显示挂起,而所有其他实例从未显示此类问题。将 strace 附加到 python 进程显示所有线程都在调用 futex FUTEX_WAIT_PRIVATE,因此它们可能试图锁定某些内容。

你会如何调试这样的问题?

请注意,这是一个从闪存运行的生产系统,因此磁盘写入也受到限制。

Hel*_*hne 5

观察有一点不正确。一个线程没有调用 futex,而是在持有 gil 的同时进行交换。由于所讨论的机器硬件较低,因此这种交换花费了很长时间并且似乎陷入了僵局。根本问题是内存泄漏。:-(