KeyDB 诊断工具 - 诊断性能问题
keydb-diagnostic-tool
是一款旨在帮助诊断数据库问题的工具。
目前,该工具只能检测系统中的吞吐量瓶颈。它通过使用 SET 命令使服务器过载并读取 CPU 使用率来实现这一点。因此,我们强烈建议**不要在生产数据库上运行此工具。**具体步骤如下:
- 启动一个包含一定数量客户端的新线程。所有这些客户端都被设置为在顺序键上重复运行 SET 命令。第一个客户端运行
SET 0
,下一个运行SET 1
,依此类推。(后续线程上的客户端不会重复键。)所有客户端都被设置为在事件循环中重复运行该命令。 - 在设定的时间段后,从服务器读取 CPU 使用率。这会显示在客户端上,并用于确定是否已达到瓶颈。
- 重复。
如果在步骤 2 之后,确定 CPU 使用率已停止增长,程序会向用户显示最终结果并终止。其逻辑如下:
- 如果服务器的 CPU 使用率处于满负荷(>=96%),则表示服务器正在处理峰值吞吐量。任何进一步的性能提升都必须在服务器端进行更改。诊断工具的后续版本将有助于在服务器仍未达到标称性能的情况下确定其他问题。
- 如果服务器的 CPU 使用率未满负荷(<96%)但已停止增长,则表示它没有接收到来自新客户端的命令。在这种情况下,该工具建议检查网络配置。后续版本将做更多工作来检测可能存在的特定网络问题。
请注意,KeyDB 服务器强制执行 2000 个并发客户端的硬性限制,该工具将在此处强制停止。一个功能正常的服务器在达到吞吐量饱和之前不太可能达到此限制,因此如果发生这种情况,很可能是某种配置错误。该工具可以启动的客户端总数是 clients * threads
,这两者都是可配置的(见下文)。但是,它可能会在达到该数字之前停止。
为了确定 CPU 使用率,该工具会检测服务器配置为运行多少个线程。这是因为内核会给出该进程使用的每个线程的总 CPU 时间。此信息会显示给用户。
#
使用示例#
选项#
-h, --host要连接的 KeyDB 服务器的主机名。默认为 127.0.0.1
。
#
-p, --port要连接的 KeyDB 服务器的端口。默认为 6379
。
#
-c, --clients每个线程启动的客户端数量。在循环的每次迭代中将启动这么多客户端。默认为 50
。
#
-t, --threads在客户端上启动的最大线程数。默认值和最大值为 500
。
#
--time启动新客户端线程之间等待的时间(毫秒)。默认为 5000
(5 秒)。
#
--dbnum选择要操作的数据库编号。默认为 0
。
#
--user [username] --password [password]为 KeyDB auth 提供凭据。默认为空。