我对我们的数据库做了一些HA测试,在模拟服务器死机的过程中,我发现了一个问题。在
我的测试使用Django并执行以下操作:
此时,mysql_ping函数中的所有内容都会无限期地挂起。至于我的应用程序是连接到数据库的(因为之前的查询),只是服务器需要很长时间来响应。。。在
有人知道如何处理这种情况吗?连接超时不起作用,因为我已经连接。read_timeout似乎是一个有点过于生硬的工具(无论如何,我都无法让Django使用它)。在
设置默认的socket超时也不起作用(而且会非常简单,因为这会影响所有的套接字操作,而不仅仅是MySQL)。在
我正在认真考虑在线程中执行查询并使用螺纹连接(timeout)执行超时。在
理论上,如果我能做到这个超时,那么重新连接逻辑就会启动,我们的数据库自动故障转移应该可以完美地工作(对受影响进程的kill-9目前可以做到这一点,但有点手动!)。在
我认为这应该更符合在前面的web服务器上设置read_超时。任何原因都有可能无限期地暂停你的django应用程序。虽然您发现了一个特定的情况,但可能还有更多(代码错误、缓存困难等)。在
相关问题 更多 >
编程相关推荐