Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache Ignite缓存的放置和获取速度很慢_Java_Performance_Caching_Ignite - Fatal编程技术网

Java Apache Ignite缓存的放置和获取速度很慢

Java Apache Ignite缓存的放置和获取速度很慢,java,performance,caching,ignite,Java,Performance,Caching,Ignite,我没有从使用ApacheIgniteDataGrid中获得预期的性能。我尝试了一些配置更改,但目前不知道如何调查性能瓶颈,我正在寻求专家帮助 我使用ApacheIgnite来缓存字节数组,它使用一个我称为ByteArray的包装类。我的测试代码试图通过调用多个put,然后从另一个进程调用多个get来测试缓存性能。我尝试在同一个节点和不同的节点上运行get进程。我还使用JavaHashMap作为缓存创建了一个基线性能规范,这具有更好的性能(put为10000x) 现在,在同一个节点上,我得到以下信

我没有从使用ApacheIgniteDataGrid中获得预期的性能。我尝试了一些配置更改,但目前不知道如何调查性能瓶颈,我正在寻求专家帮助

我使用ApacheIgnite来缓存字节数组,它使用一个我称为ByteArray的包装类。我的测试代码试图通过调用多个put,然后从另一个进程调用多个get来测试缓存性能。我尝试在同一个节点和不同的节点上运行get进程。我还使用JavaHashMap作为缓存创建了一个基线性能规范,这具有更好的性能(put为10000x)

现在,在同一个节点上,我得到以下信息:
Hashmap缓存,同一节点:放置2600MB/s;获得300 MB/s
点燃同一节点缓存:投入0.4MB/s;获得2.0 MB/s的速度
点燃缓存,2个节点:放置0.3 MB/s;获取0.7 MB/s


我在复制模式下运行了这些,但在分区模式下看到了类似的结果。我运行测试的多次迭代并平均计时。我的节点有25GB的内存,我的测试消耗约1GB的内存。我已将VM配置为使用10GB最大值。

首先,将Ignite性能与
HashMap
进行比较没有多大意义。Ignite是一个分布式和可扩展的系统,而
HashMap
甚至不是线程安全的

事实上,您使用了
HashMap
作为基线,这让我认为您的测试是单线程的。如果您尝试从多个线程/客户机查询Ignite,我相信您会注意到更好的吞吐量


还要记住,使用Ignite意味着通过网络发送数据。您可能会受到其速度的限制。

我理解您对线程和Ignite的分布式特性的看法,但我创建了
HashMap
示例纯粹是为了了解节点上的原始性能(并发现基准代码中的错误)。Ignite定时是针对2个客户端(相同节点和2个节点情况),这就是我性能低下的地方。我想知道我是否使用点火错误。我需要在N个节点上执行一系列的put,然后在这些节点上执行get。Ignite是正确的工具吗?我能期望以MB/s为单位的性能是什么?这就是重点。您将本地非线程安全映射与分布式集群进行比较,这意味着网络通信。这是绝对无效的比较。无论您做什么,都应该尽可能减少通过网络传输的数据量,例如通过使用关联搭配:。至于确切的吞吐量数字,实际上没有限制,因为Ignite可以通过添加更多节点来扩展。