数据插入tidb集群耗时越来越长,最终导致数据库连接中断,程序崩溃。
目前集群的配置是使用3台虚拟机,虚拟机的配置为8核cpu,16g内存,100磁盘。写入的数据为每次写入5000条,每秒写入10次。
查看监控可以发现最长的插入时间达到了10分钟:
有查询了部分错误日志:
数据插入tidb集群耗时越来越长,最终导致数据库连接中断,程序崩溃。
目前集群的配置是使用3台虚拟机,虚拟机的配置为8核cpu,16g内存,100磁盘。写入的数据为每次写入5000条,每秒写入10次。
查看监控可以发现最长的插入时间达到了10分钟:
在TiDB Dashboard 上分析慢查询的执行流程,先确认是哪个环节最慢,然后再进行对于的分析处理
上CPU和存储的监控图,每条insert后只跟一个值还是5000个值?
表结构也发一下,热点了吧
每条insert后只跟5000个值的
表上有主键没,值是连续的吗?比如(1,xx),(2,xx)这样
CREATE TABLE GponPmOnuLocalInfos
(
node_id_str
varchar(100) NOT NULL COMMENT ‘设备的hostname,为设备在网络中的唯一标识’,
subscription_id_str
varchar(100) NOT NULL COMMENT ‘订阅名称’,
collection_id
bigint(20) unsigned NOT NULL COMMENT ‘标识采样轮次’,
collection_start_time
datetime DEFAULT NULL COMMENT ‘标识采样轮次开始时间’,
name
varchar(100) DEFAULT NULL COMMENT ‘//ONU名称,格式:v_ani.f.s.p.onuid’,
channel
varchar(100) DEFAULT NULL,
index
int(10) unsigned DEFAULT NULL,
olt_rx_power
int(10) DEFAULT NULL COMMENT ‘//OLT光模块接收到ONU的光功率,单位:0.01dBm’,
online_duration
int(10) unsigned DEFAULT NULL COMMENT ‘//在线时长,单位:秒’,
last_down_time
int(10) unsigned DEFAULT NULL COMMENT ‘//最后一次下线时间’,
last_down_cause
int(10) unsigned DEFAULT NULL COMMENT ‘//最后一次下线原因’,
onu_status
int(10) unsigned DEFAULT NULL COMMENT ‘//ONU状态,1-online,2-offline,255-invalid’,
PRIMARY KEY (node_id_str
,subscription_id_str
,collection_id
)
) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS=3;
你是不是三个节点上tidb 、pd、tikv 都有,然后insert的tidb server只连了蓝色?
设置了主键,你看下表结构:
CREATE TABLE GponPmOnuLocalInfos
(
node_id_str
varchar(100) NOT NULL COMMENT ‘设备的hostname,为设备在网络中的唯一标识’,
subscription_id_str
varchar(100) NOT NULL COMMENT ‘订阅名称’,
collection_id
bigint(20) unsigned NOT NULL COMMENT ‘标识采样轮次’,
collection_start_time
datetime DEFAULT NULL COMMENT ‘标识采样轮次开始时间’,
name
varchar(100) DEFAULT NULL COMMENT ‘//ONU名称,格式:v_ani.f.s.p.onuid’,
channel
varchar(100) DEFAULT NULL,
index
int(10) unsigned DEFAULT NULL,
olt_rx_power
int(10) DEFAULT NULL COMMENT ‘//OLT光模块接收到ONU的光功率,单位:0.01dBm’,
online_duration
int(10) unsigned DEFAULT NULL COMMENT ‘//在线时长,单位:秒’,
last_down_time
int(10) unsigned DEFAULT NULL COMMENT ‘//最后一次下线时间’,
last_down_cause
int(10) unsigned DEFAULT NULL COMMENT ‘//最后一次下线原因’,
onu_status
int(10) unsigned DEFAULT NULL COMMENT ‘//ONU状态,1-online,2-offline,255-invalid’,
PRIMARY KEY (node_id_str
,subscription_id_str
,collection_id
)
) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS=3;
上下磁盘的监控,或者你再启下insert程序,然后用dstat 1 或 vmstat 1输出下主机状态,截个图
三个tidb都有连接的,都出现了超过10min的时间
不是聚簇表吧,改成聚簇表插入试试
怎么还有断断续续的线,tikv挂过?
晚上9点左右过后,有挂过
存储是什么?ssd?机械?我还是建议再跑下insert,截个系统状态图(dstat 1 或 vmstat 1)
或者去普罗米修斯里找disk的监控
你看下表结构,要怎么改呢:
CREATE TABLE GponPmOnuLocalInfos
(
node_id_str
varchar(100) NOT NULL COMMENT ‘设备的hostname,为设备在网络中的唯一标识’,
subscription_id_str
varchar(100) NOT NULL COMMENT ‘订阅名称’,
collection_id
bigint(20) unsigned NOT NULL COMMENT ‘标识采样轮次’,
collection_start_time
datetime DEFAULT NULL COMMENT ‘标识采样轮次开始时间’,
name
varchar(100) DEFAULT NULL COMMENT ‘//ONU名称,格式:v_ani.f.s.p.onuid’,
channel
varchar(100) DEFAULT NULL,
index
int(10) unsigned DEFAULT NULL,
olt_rx_power
int(10) DEFAULT NULL COMMENT ‘//OLT光模块接收到ONU的光功率,单位:0.01dBm’,
online_duration
int(10) unsigned DEFAULT NULL COMMENT ‘//在线时长,单位:秒’,
last_down_time
int(10) unsigned DEFAULT NULL COMMENT ‘//最后一次下线时间’,
last_down_cause
int(10) unsigned DEFAULT NULL COMMENT ‘//最后一次下线原因’,
onu_status
int(10) unsigned DEFAULT NULL COMMENT ‘//ONU状态,1-online,2-offline,255-invalid’,
PRIMARY KEY (node_id_str
,subscription_id_str
,collection_id
)
) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS=3;
你这是建表没有设置AUTO_RANDOM,写入有热点问题。