在 Google Compute Engine / Amazon EC2 实例上使用 Neo4j 的最佳实践

Posted

技术标签:

【中文标题】在 Google Compute Engine / Amazon EC2 实例上使用 Neo4j 的最佳实践【英文标题】:Best practices for use of Neo4j on Google Compute Engine / Amazon EC2 instances 【发布时间】:2014-05-17 01:54:47 【问题描述】:

有一个very nice guide 为 Neo4j 优化 linux 机器。但本指南假定物理硬盘驱动器的典型特征。我在 Google CE 和 Amazon EC2 上运行我的 Neo4j 实例。我找不到任何详细说明这些虚拟机的最佳设置的文档。在内存(用于堆或扩展使用)和磁盘速度/IOPS 方面我需要哪些资源才能获得最佳性能?我目前有几百万个节点和大约一千万个关系(2 GB),并且数据大小随着导入而增加。

在 EC2 上,我曾经依赖 SSD 暂存磁盘,然后定期备份到永久磁盘。 Compute Engines 上没有这样的东西,而且写入速度对我来说似乎不是很高,至少在正常磁盘大小下(因为speed changes with size)。有什么方法可以让我的导入/索引操作获得合理的性能?或者这些操作可能更多地与内存和计算能力有关?

欢迎补充阅读...

【问题讨论】:

提供更详细的答案@***.com/questions/26751346/… 【参考方案1】:

尽可能使用本地磁盘,SSD 比其他更好,尝试 AWS 上的预置操作。

EBS 不太适合,它速度慢且不稳定。

虽然不知道计算引擎,但您可能希望使用更多 RAM,然后尝试将图形的较大部分加载到内存中。

补充阅读:http://structr.org/blog/neo4j-performance-on-ext4

您仍然应该检查该博客文章中提到的其他内容。像 Linux 调度器,写屏障等。

最好手动设置这些内存映射设置。对于 2 级缓存,可以查看带有 hpc 缓存的企业版。

另请参阅此网络研讨会:https://vimeo.com/46049647 on hw-sizing

【讨论】:

那是一篇很棒的文章。如果我的内存大到足以容纳整个数据库,我是否需要调整内存映射设置才能让 Neo4j 将数据保存在内存中? 对自己的回应:如果有足够的可用内存,显然可以使用 cache_type=strong 。参考:docs.neo4j.org/chunked/milestone/configuration-caches.html

以上是关于在 Google Compute Engine / Amazon EC2 实例上使用 Neo4j 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

ruby Google Compute Engine快照在Ruby中创建和旋转

Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?

Google App Engine 通过内部网络与 Compute Engine 通信

如何在 Google Compute Engine 上运行 Docker?

Google Compute Engine 上的 FreeBSD

验证 Google Compute Engine 虚拟机以访问 Maps Engine API