如何检测Python导致的MySQL服务器死亡?

2024-03-29 01:49:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我对我们的数据库做了一些HA测试,在模拟服务器死机的过程中,我发现了一个问题。在

我的测试使用Django并执行以下操作:

  1. 连接到数据库
  2. 执行查询
  3. 拔出服务器的网线
  4. 执行另一个查询

此时,mysql_ping函数中的所有内容都会无限期地挂起。至于我的应用程序是连接到数据库的(因为之前的查询),只是服务器需要很长时间来响应。。。在

有人知道如何处理这种情况吗?连接超时不起作用,因为我已经连接。read_timeout似乎是一个有点过于生硬的工具(无论如何,我都无法让Django使用它)。在

设置默认的socket超时也不起作用(而且会非常简单,因为这会影响所有的套接字操作,而不仅仅是MySQL)。在

我正在认真考虑在线程中执行查询并使用螺纹连接(timeout)执行超时。在

理论上,如果我能做到这个超时,那么重新连接逻辑就会启动,我们的数据库自动故障转移应该可以完美地工作(对受影响进程的kill-9目前可以做到这一点,但有点手动!)。在


Tags: django函数服务器数据库应用程序内容过程mysql
1条回答
网友
1楼 · 发布于 2024-03-29 01:49:33

我认为这应该更符合在前面的web服务器上设置read_超时。任何原因都有可能无限期地暂停你的django应用程序。虽然您发现了一个特定的情况,但可能还有更多(代码错误、缓存困难等)。在

相关问题 更多 >