首页 > 解决方案 > Aerospike:地图尺寸过大时出现设备过载错误

问题描述

程序在生产中成功运行几个月后,我们收到“设备过载”错误。而且我们发现有些地图的尺寸​​非常大,可能大于1000。

查阅源码后发现“设备过载”的原因是写队列超出限制,而写队列的长度与处理效率有关。

所以我检查了“particle_map”文件,我怀疑即使我们只想在地图中插入一对KV,也会重写整个地图。

但我对此不太确定。有什么建议吗?

标签: aerospikeaerospike-loaderaerospike-ce

解决方案


所以我检查了“particle_map”文件,我怀疑即使我们只想在地图中插入一对KV,也会重写整个地图。

你是对的。使用持久性时,Aerospike 不会就地更新记录。每个更新/插入都缓冲到内存中的写入块中,当写入块已满时,将排队等待写入磁盘。此队列允许超过磁盘最大 IO 的短突发,但如果突发持续时间过长,服务器将开始导致写入失败,并出现您提到的“设备过载”错误。允许磁盘落后多远由max-write-cache namespace storage-engine 参数控制。

您可以在https://www.aerospike.com/docs/architecture/index.html找到有关我们存储层的更多信息。


推荐阅读