检测服务器过载以限制mysql查询

Detecting server overload to limit mysql queries

本文关键字:mysql 查询 服务器 检测      更新时间:2023-10-16

我正在编程c++服务,它每隔1秒在mysql服务器上使用LIMIT 1进行一次SELECT查询,然后进行计算,然后使INSERT和this永远循环。

我想检测服务器过载,以使SELECT具有更大的LIMIT,例如LIMIT 10和更大的inetrvals,例如每5秒左右。不确定我的解决方案是否会减轻服务器过载。

我的问题是如何检测这些过载,我不确定我所说的过载是什么意思:)它可以是任何东西,但我的应用程序是php(聊天)中的web应用程序,所以过载可以在Apache2端或mysql端检测到,或者检测有多少用户在时间间隔内进行了多少次输入(聊天消息)。我不知道:/

谢谢!

编辑:好吧,我用C++应用程序制作了一个套接字服务器,而且速度非常快。现在我正在与内存泄漏作斗争,但那是另一回事了。

因此,感谢@brianbeuning对我的问题提出的有益意见。

最好永远解决这个循环,这不是一个好主意。

如果那个循环真的是必须的,那么就使用一些缓存技术。

为了检测"过载"(我称之为MySQL CPU使用率高),请尝试调用操作系统支持的外部命令。

例如,如果在Linux上使用此命令,请使用ps命令。


编辑:

我现在意识到你正在编程聊天服务器。使用MySQL作为中间人不是一个好主意。尝试在不使用MySQL的情况下解决此问题,然后如果您需要保存聊天日志,偶尔将其保存到MySQL(例如,每隔10秒左右)。

我敢打赌,现在只有20个密集型用户会占用CPU。

尝试直接进行客户端到客户端的通信,而不需要服务器(仅使用服务器在两个客户端之间建立通信)。

另一种方法是缓冲应用程序中的数据,并使用各种连接池来管理负载。保留需要插入的数据的滚动缓冲区,并根据缓冲区的大小管理"限制"。