博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vertica “ERROR: Too many ROS containers exist”
阅读量:7198 次
发布时间:2019-06-29

本文共 1180 字,大约阅读时间需要 3 分钟。

最近在用Vertica的时候碰到一个问题,Vertica在运行了一段时间后总是出现类似下面的错误

1
2
java.sql.SQLException: [Vertica][VJDBC](5065) ERROR: Too many ROS containers existforthe following projections:
<projection> (limit =18078, ROS files =12088, DV files =5992,newfiles =10)

碰到找个问题就不得不说说Vertica的存储机制了。Vertica在默认情况下会把新写入的数据写入到WOS(写优化)中,然后根据一定的条件(比如说一定的时间周期)再把WOS中的数据写入到ROS(读优化)中,这时ROS有可能很多都是很小数据块的碎片,这是Vertica会在一定的时间周期后把这些ROS数据块合并成大的ROS文件。

这里把数据从WOS写入到ROS的过程Vertica管它叫MoveOut操作,而把零散的ROS合并成大的ROS的过程Vertica管它叫MergeOut操作。

好了,现在来看看我们的问题吧。错误里报的是ROS太多,那可能的原因是

1. WOS写ROS太多,这个原因的原因很大的可能是每次insert/update的数据集太小,导致生成的碎片太多。
2. ROS太多,而配置的MoveOut和MergeOut的时间间隔太长,导致来不及做MoveOut和MergeOut。

好吧来看看我的应用吧

1. 针对第一个可能的原因,确实是我们的应用的需求的问题,这个目前来说我们没法改变。
2. 对于第二个可能的原因,我们查了一下Vertica的资料,在Vertica中默认的MergeOutInterval是600,MoveOutInterval是300。这两个参数可以通过下面的命令来查看

1
2
SELECTGET_CONFIG_PARAMETER(‘MoveOutInterval’);
SELECTGET_CONFIG_PARAMETER(‘MergeOutInterval’);

由于我们的应用本身会产生很多的ROS碎片,所以我们想到了是不是可以通过减小MoveOut和MergeOut的Interval来让Vertica尽快的做MoveOut和MergeOut。因此我们修改了Vertica的参数

1
2
SELECTSET_CONFIG_PARAMETER(‘MoveOutInterval’, 60);
SELECTSET_CONFIG_PARAMETER(‘MergeOutInterval’, 30);

在修改了这两个参数以后,我们的应用确实在运行了很长时间后都没有再出现上面的问题了。

其实关于这个问题,还有几个参数可以调节,具体资料可以参考

转载地址:http://cqkum.baihongyu.com/

你可能感兴趣的文章
五种情况下Win7或重蹈Vista覆辙
查看>>
Timer定时器
查看>>
Win7、Ubuntu双系统正确卸载Ubuntu系统
查看>>
两数互换的例子
查看>>
我的友情链接
查看>>
网络拓扑自动发现-Sugarnms智能网管软件的基础
查看>>
线程的状态转换图
查看>>
我的友情链接
查看>>
在interface builder中设置多个等比例排列的View
查看>>
VMware vSphere 5.0 五大改变
查看>>
spring注解性的事物@Transactional不起作用
查看>>
我的友情链接
查看>>
zookeeper常用使用场景
查看>>
高性能HTTP加速器Varnish(概念篇)
查看>>
使用aulayout自适应uitableviewcell高度
查看>>
selinux学习笔记
查看>>
pureftpd服务器的配置
查看>>
让我们一起Go(三)
查看>>
简单的Linux数据备份方案
查看>>
RIP协议和RIP2
查看>>