Graphite中的Carbon监听器经过精心设计和调整,使其在服务器上的负载有一定的可预测性,以避免服务器本身充满IO等待或整体上飙升系统负载。如有必要,它将丢弃传入的数据,将服务器负载作为优先级。毕竟,对于存储的典型数据,这没什么大不了的。
我很欣赏这一切。但是,我试图从一个不同的来源 将大量积压的数据 引入石墨,而不是在实际数据中输入实时数据。我有一个来自第三方的可靠数据源,它是一天一天散装给我的。
所以在这种情况下, 我不希望任何数据值掉落在地板上 。我真的不关心数据导入需要多长时间。我只是想禁用所有的安全机制,让碳做它的事情,并且知道我的所有数据都已经进入。
我正在搜索文档并找到有关在carbon.conf中调整carbon_cache参数的各种建议,但我无法找到它。它开始听起来更像艺术而不是科学。任何帮助表示赞赏。
答案 0 :(得分:2)
首先当然是通过tcp监听器(线路接收器)而不是udp接收数据,以避免丢失传入点。
石墨中有几种设置可以节流部分管道,但并不总是清楚达到阈值时石墨的作用。您必须测试和/或阅读碳代码。
你可能想要调整:
MAX_UPDATES_PER_SECOND = 500
(一秒内最大磁盘更新次数)
MAX_CREATES_PER_MINUTE = 50
(每分钟创建的最大指标数)
对于缓存,USE_FLOW_CONTROL = True
和MAX_CACHE_SIZE = inf
(inf是一个很好的值,所以如果你改了它就恢复它)
如果您使用中继和/或聚合器,MAX_QUEUE_SIZE = 10000
和USE_FLOW_CONTROL = True
很重要。
答案 1 :(得分:1)
我将此属性设置为" inf":
MAX_CREATES_PER_MINUTE = inf
并确保这也是无限的:
MAX_CACHE_SIZE = inf
在批量加载期间,我监视/opt/graphite/storage/log/carbon-cache/carbon-cache-a/creates.log以确保正在创建耳语DB。 为了确保,您可以再次运行负载,并且不应再进行创建。