Firebase Realtime Database 性能分析器命令
要生成关于 Realtime Database 实例中操作的速度和带宽使用情况的报告,请使用以下命令:
firebase database:profile
标志选项 | 说明 |
---|---|
-h, --help |
输出用法信息。 |
-o, --output FILENAME |
将输出内容保存到指定的文件。 |
-i, --input FILENAME |
基于指定的文件(而不是来自服务器的流日志)生成报告。 |
-d, --duration SECONDS |
收集指定秒数的数据库使用情况信息。 |
--raw |
输出以(换行符分隔的)JSON 格式收集的原始统计信息。 |
操作类型
concurrent-connect
此操作体现的是与数据库的实时连接(例如,当新客户端通过 SDK 建立连接时)。concurrent-connect 操作不涵盖 RESTful 连接。
{ "name": "concurrent-connect", "timestamp": 1484776334900 }
concurrent-disconnect
concurrent-disconnect 操作体现的是已与数据库断开的连接(例如,当客户端断开连接或停止工作时)。
{ "name": "concurrent-disconnect", "timestamp": 1484776341844 }
realtime-write
来自实时连接的写入请求。例如,适用于 Web 客户端的 set()
和 push()
操作。删除请求也会计为 realtime-write
操作,并显示为 0 字节的写入。
{ "allowed": true, // If security rules allow the operation "bytes": 1, "millis": 2, "name": "realtime-write", "path": [ "foo" ], "timestamp": 1484776538763 }
realtime-transaction
此操作类型包含通过实时连接进行的事务。 重复的事务可能是由失败的尝试和重试造成的。
{ "allowed": true, "bytes": 20, "millis": 2, "name": "realtime-transaction", "path": [ "foo" ], "timestamp": 1484776854610 }
realtime-update
这些实时更新操作体现特定数据的重写,而不是 realtime-write
中更广义的写入操作。
{ "allowed": true, "bytes": 5, "millis": 2, "name": "realtime-update", "path": [ "foo" ], "timestamp": 1484776538769 }
listener-listen
这些操作体现的是客户端对特定位置的数据的初始请求。例如,适用于 Web 客户端的 on()
或 once()
方法。
{ "allowed": true, "bytes": 0, "millis": 26, "name": "listener-listen", "path": [ "foo" ], "querySet": [], "timestamp": 1484776335024, "unIndexed": false }
listener-broadcast
此操作涵盖从服务器发送到所有在每次写入和更新操作后侦听给定位置的客户端的数据。更改数据会触发广播操作。不过,如果没有任何正在进行侦听的客户端,您可能会看到 0 项更新。
{ "bytes": 56, // Total bytes sent across clients "clientsUpdated": 3, // This may be 0 if no clients are listening "millis": 17, "name": "listener-broadcast", "path": [ "baz", "mar" ], "timestamp": 1484775969928 }
listener-unlisten
这些操作体现的是停止工作的侦听客户端或通过分离方法停止侦听的侦听客户端(例如,适用于 Web 的 off()
或适用于 iOS 的 removeAllObservers
)。
{ "name": "listener-unlisten", "path": [ "foo" ], "timestamp": 1484776335044 }
rest-read
通过 REST API 对请求执行 GET
操作。
{ "allowed": true, "bytes": 348, // This would be 0 if the read data was null "millis": 26, "name": "rest-read", "path": [], "querySet": [ { "default": true, "endIndexValue": "[MAX_NAME]", "equality": false, "index": {}, "limit": null, "range": false, "simpleLimit": false, "startIndexValue": "[MIN_NAME]", "viewFrom": null } ], "timestamp": 1484775747416 }
rest-write
通过 REST API 对请求执行 PUT
和 POST
操作。DELETE
请求显示为 0 字节的 rest-write
操作。
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-write", "path": [], "timestamp": 1484775917216 }
rest-transaction
对于类似事务的行为,请使用条件请求。
rest-transaction
操作使用 Etag
或 if-match
标头捕获请求。
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-transaction", "path": [], "timestamp": 1484775917216 }
rest-update
通过 REST API 进行的更新体现 PATCH
请求。
{ "allowed": true, "bytes": 5, "millis": 11, "name": "rest-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-put
这些操作体现的是将 onDisconnect
监听器添加到写入操作这一过程。例如,当您使用 onDisconnect().setValue()
时。
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-put", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-update
这些操作体现的是将 onDisconnect
监听器添加到更新操作这一过程。例如,当您使用 onDisconnect().updateChildren()
时。
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-cancel
这些操作体现的是移除 onDisconnect 监听器这一过程。
例如,当您使用 onDisconnect().set().cancel()
时。
{ "millis": 2, "name": "on-disconnect-cancel", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
run-on-disconnect
这些操作体现的是触发 onDisconnect
监听器这一过程。
当实时客户端在至少添加一个 onDisconnect
监听器后断开连接时,分析器会记录单个 run-on-disconnect
操作,以反映触发的所有 onDisconnect
监听器的总计字节和时间。
{ "bytes": 4, "millis": 2, "name": "run-on-disconnect", "timestamp": 1484775969930 }