【发布时间】:2018-05-05 07:58:20
【问题描述】:
我有一个有趣的问题想找到解决方案。
我有一个在 Ubuntu (16.04) 上运行的 MySQL 服务器。我还有许多服务器,它们将 CPU 温度、网络流量数据和 CPU 负载等系统信息存储在 MySQL 服务器上的数据库中。为此,我在每台服务器上运行了几个 Python 程序,它们收集数据并将其推送到数据库。
在这些服务器上,我还有一些脚本会定期查询数据库以获取历史数据,然后将这些数据绘制成图形并显示在网页上。
我现在设置的方式导致所有服务器倾向于同时查询数据库。这会导致 MySQL 服务器上的高负载,随后很长一段时间几乎没有负载。
有哪些选项(最好是客户端 Python)可以帮助我更均匀地分散 SQL 服务器上的负载?
【问题讨论】:
-
你能简单地给这些服务器计时吗……?也许添加一个随机延迟?见Stampeding/Thundering Herd问题。
-
是的,完全相同的代码在所有客户端上运行。因此,可以在默认周期时间中添加一个随机时间。但是,我仍然无法控制客户之间的任何同时查询。
-
嗯,是的,如果你想以分散的方式协调同时进行的活动,除了随机延迟之外别无他法。查询不能做同样的事情?
-
@deceze "查询不能做同样的事情吗?"我不知道。
-
那么,在所有客户端的开头添加一个
sleep(randint(60, 360))...?
标签: python mysql python-3.x debian-based