我们在32 GB(内存)服务器上的InfluxDB实例中存储了大量的亚分钟股票价格数据,并且存储量充足。不幸的是我们有记忆问题。已完成以下调整:
Enumeration<byte[]> e = sslContext.sessionContext().getIds();
while ( e.hasMoreElements() ) {
byte[] b = e.nextElement();
System.out.println("session id: " + DatatypeConverter.printHexBinary(b).toLowerCase());
SSLSession session = sslContext.sessionContext().getSession(b);
Class<?> c = Class.forName("sun.security.ssl.SSLSessionImpl");
Field masterSecretField = c.getDeclaredField("masterSecret");
masterSecretField.setAccessible(true);
SecretKey k = (SecretKey)masterSecretField.get(session);
System.out.println("secret: " + DatatypeConverter.printHexBinary(k.getEncoded()).toLowerCase());
}
系列数约为650000,几乎没有增长。
简化后,我们的架构目前在单个衡量标cache_snapshot_memory_size => 6553600,
cache_snapshot_write_cold_duration => '1m',
max_series_per_database => 10000000,
cluster_write_timeout => '10s',
中存储出价和要价,其中包含orderbook
,bid
,ask
,{{非索引)字段1}}等,除了一些(索引)标签。除了一个bid_volume
标记外,它们都具有小基数。
如果每个自动收报机有一个订单簿测量,我们会看到内存占用减少了吗? ask_volume
,ticker
,orderbook.aapl
等
目前我们有大约300个代码,但这可能会在几年内增长到10000个。
检索数据时,我们总是在代码上使用过滤器。
参考文献:
答案 0 :(得分:2)
来自gophers.slack.com的#influxdb的答案:
您提出的方法是无效的。我们强烈建议使用标签。这是数据库假定用户将对其数据建模的方式。向测量添加元数据是反模式
将唯一标记拆分为独特的标记不应该显着帮助您的记忆消耗