我目前正在针对近乎实时的应用程序对Appache Ignite进行基准测试,对于相对较小的样本量,简单操作似乎过于缓慢。 以下是设置详情和时间安排 - 请在底部查看2个问题。
设定:
第一个用例是以不同的速率计算对象的两个字段的加权平均值。
第一种方法是运行SQL样式查询:
...
query = new SqlFieldsQuery("select SUM(field1*field2)/SUM(field2) from MyObject");
cache.query(query).getAll();
....
观察到的时间是:
缓存:500,000查询/秒:10
中位数:428ms,第90百分位数:13,929ms
缓存:500,000查询/秒:50
中位数:191,465ms,第90百分位数:402,285ms
显然,这会以极大的延迟(> 400 ms)排队,单个jvm(4个核心)上的简单加权平均计算需要6 ms。
第二种方法是使用IgniteCompute在节点间广播Callables并计算每个节点的加权平均值,在调用者处减少,延迟只是稍微好一些,吞吐量提高但仍处于无法使用的水平。
缓存:500,000查询/秒:10
中位数:408ms,90th百分位数:507ms
缓存:500,000查询/秒:50
中位数:114,155ms,第90百分位数:237,521ms
我在实验中注意到的一些事情:
我的问题:
答案 0 :(得分:0)
在Apache Ignite用户论坛上详细讨论了该主题:http://apache-ignite-users.70518.x6.nabble.com/Ignite-performance-td6703.html