本文介绍TSDB的常见问题。
如何选择 TSDB 的实例规格?
您可根据以下两个指标选择 TSDB 的实例规格:
时间线数:对应设备上的采集点数。一个采集点可以是某个设备上需要上传数据的一个传感器。计算公式:设备规模(总设备数) × 单个设备的采集点数或传感器数。
写入效率:全局每秒需要写入时序数据库的平均数据点数(数据记录数)。计算公式:时间线数 × 单条时间线每秒需要写入的平均数据点数。
在多值模型中,数据点数 = 数据点的个数 × 每个数据点中的字段个数
TSDB 支持公网访问吗?
TSDB 支持公网访问,但您需要先使用 VPC 网络创建实例,然后在 TSDB 控制台开启公网连接,具体操作方式请参见网络连接文档的公网连接一节。
TSDB 如何进行数据可视化展示?
TSDB 目前支持通过接入 Grafana 对数据进行可视化展示。详情请见可视化-接入Grafana。
实例访问超时,显示错误码“Connection timed out”,如何解决?
由于 TSDB 实例默认是专有网络 VPC 的模式,这种模式下如果访问机器和 TSDB 实例不在同一个 VPC 环境内,会出现网络不通,连接超时的错误。解决办法如下:
如果写入机器和实例在同一个区域 Region 内,可将写入测试机器加入到 TSDB 所在实例的 VPC 网关下即可。具体操作方式请参见单ECS迁移示例。
请求返回:“Exceed Max TS counter xxxx”,如何解决?
返回这个结果表示 TSDB 实例的时间线(timelines or time series)总数量已经超过当前定义的产品规格
(请参见产品规格和定价),需进行扩容。
请求返回:“a null credential specified in the authorization field”, 如何解决?
返回这个结果表示TSDB实例开启了用户管理功能,但业务发起的请求中没有带上用户认证信息。
建议在用户管理功能开启后,需要调整业务逻辑,保证向TSDB发起的写入/查询请求必须带上对应的用户认证信息。
TSQL 查询返回错误 “INTERNAL: Missing start time.”
用户在 TSDB 控制台中的“TSQL数据开发”界面执行 SQL 查询时,有可能会遇到执行报错,错误信息如下:
Error in calling SQL restful api with error { "errorMessage" : "INTERNAL_ERROR ERROR: io.grpc.StatusRuntimeException: INTERNAL: Missing start time.\nTSDB query execution failure \n …… }
这种错误的原因是因为用户执行的 SQL 语句中,未在 WHERE 语句中指定查询起始时间,比如:
select * from metric_name
因为不带时间范围的 SQL 查询会执行全表扫描,当数据量较大时可能会影响实例性能,因此我们在新版 TSDB (版本号 >= 2.5.14) 之中添加了这个查询语句限制,要求 SQL 查询像 HTTP 查询接口一样,也必须指定查询的起始时间。
因此用户需要在 SQL 语句中指定查询起始时间,才可以正确执行查询,比如:
select * from metric_name where `timestamp` >= '2020-01-01 00:00:00 +0800'