aerospike - Aerospike:地图尺寸过大时出现设备过载错误
问题描述
程序在生产中成功运行几个月后,我们收到“设备过载”错误。而且我们发现有些地图的尺寸非常大,可能大于1000。
查阅源码后发现“设备过载”的原因是写队列超出限制,而写队列的长度与处理效率有关。
所以我检查了“particle_map”文件,我怀疑即使我们只想在地图中插入一对KV,也会重写整个地图。
但我对此不太确定。有什么建议吗?
解决方案
所以我检查了“particle_map”文件,我怀疑即使我们只想在地图中插入一对KV,也会重写整个地图。
你是对的。使用持久性时,Aerospike 不会就地更新记录。每个更新/插入都缓冲到内存中的写入块中,当写入块已满时,将排队等待写入磁盘。此队列允许超过磁盘最大 IO 的短突发,但如果突发持续时间过长,服务器将开始导致写入失败,并出现您提到的“设备过载”错误。允许磁盘落后多远由max-write-cache namespace storage-engine 参数控制。
您可以在https://www.aerospike.com/docs/architecture/index.html找到有关我们存储层的更多信息。
推荐阅读
- c - 为什么我们需要在给定的问题解决方案中初始化 MaxhourglassSum=(-63)?
- java - 写入 Apache POI 工作簿时获取 java.lang.NullPointerException
- javascript - Firebase Auth 登录区别
- css - 向上箭头符号未在 IE 中呈现
- r - 排除基于 R 中多列的异常值?IQR 方法
- json - 如何快速解析动态 JSON
- security - 我如何仅通过登录 Gmail 来登录 youtube.com?
- javascript - 是否可以安装预缓存服务器数据的 PWA?
- web-scraping - 网页抓取 Yahoo Finance 推荐评级
- javascript - Javascript函数执行和嵌套函数调用