0

我正在编写 c++ 服务,它每 1 秒不断地在 mysql 服务器上使用 LIMIT 1 进行 SELECT 查询,一些东西计算然后进行 INSERT 并且这个循环永远永远。

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

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

谢谢!

编辑:好的,我用我的 C++ 应用程序制作了一个套接字服务器,而且它真的很快。现在我正在为内存泄漏而苦苦挣扎,但那是另一回事了。

所以感谢@brianbeuning对我的问题有帮助的想法。

4

2 回答 2

1

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

于 2013-02-22T13:30:09.367 回答
1

更好地解决永远循环的问题,这不是一个好主意。

如果确实必须使用该循环,则使用一些缓存技术。

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

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


编辑:

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

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

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

于 2013-02-22T00:32:03.540 回答