网关是一个管道架构,在管道的每个阶段之间具有一个切换队列。由于通过网关的流量具有突发性,预计切换队列中偶尔会出现数据包堆积。不过,如果在某些队列中队列长度持续较高,则表示存在容量问题。
以下示例显示 debug.py
命令输出以查看切换队列输出。
为了简洁起见,截断了输出以仅显示第一个和最后一个条目。您可以在命令中排除 -v
选项以使用表格格式查看输出。
vcadmin@vcg1-example:~$ /opt/vc/bin/debug.py -v --handoff { "handoffq": [ { "deq": 1087872263, "drops": 0, "dummy": 81805328, "enq": 1087872265, "head": 81805328, "lockfree": 0, "next": 0, "qlength": 2, "qlimit": 2048, "sleeping": 1, "state": "UNMONITORED", "tail": 81805328, "wmark": 948, "wokenup": 817162303 }, … { "deq": -1801919228, "drops": 0, "dummy": 176733280, "enq": -1801919223, "head": 176733280, "lockfree": 0, "name": "glob_ls_0", "next": 0, "qlength": 5, "qlimit": 1024, "sleeping": 1, "state": "UNMONITORED", "tail": 176733280, "wmark": 1024, "wokenup": 1567885088 } ] } vcadmin@vcg1-example:~$
您需要关注 qlength 和 wmark 值。
qlength 列指示当前在队列中缓冲的数据包数。wmark 列指示队列曾经到达的最大深度,这表示网关距离丢弃数据包有多远。这些问题的影响和修复在很大程度上取决于监控的队列。
您应同时监控关键队列和非关键队列。