本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Neptune 选择实例类型
Amazon Neptune 提供了许多不同的实例大小和系列,它们提供了适合不同图形工作负载的不同功能。本节旨在帮助您选择最适合您需求的实例类型。
有关这些系列中每种实例类型的定价,请参阅 Neptune 定价页面
实例资源分配概述
Neptune 中使用的每种 Amazon EC2 实例类型和大小都提供一定数量的计算 (vCPUs) 和系统内存。Neptune 的主存储位于集群中数据库实例的外部,这使得计算和存储容量可以相互独立扩展。
本节重点介绍如何扩展计算资源,以及每种不同实例系列之间的差异。
在所有实例系列中,将 v CPU 资源分配为每个 v 支持两 (2) 个查询执行线程CPU。这种支持由实例大小决定。在确定给定 Neptune 数据库实例的适当大小时,您需要考虑应用程序可能的并发性以及查询的平均延迟。您可以按如下方式估算 vCPUs 所需的数量,其中延迟按平均查询延迟(以秒为单位)来衡量,并发度按每秒的目标查询数来衡量:
vCPUs=(latencyxconcurrency)/2
注意
SPARQL在某些情况下,使用 openCypher 查询引擎的查询、查询和 Gremlin 读取DFE查询可以为每个查询使用多个执行线程。在最初调整数据库集群大小时,首先假设每个查询每次执行将消耗单个执行线程,如果您观察到查询队列中有背压,则可以纵向扩展。这可以通过使用/gremlin/status
/oc/status
、或来观察 /sparql/status
APIs,也可以使用MainRequestsPendingRequestsQueue
CloudWatch 指标进行观察。
每个实例上的系统内存分为两个主要分配:缓冲池缓存和查询执行线程内存。
实例中大约有三分之二的可用内存分配给缓冲池缓存。缓冲池缓存用于缓存图形中最近使用的组件,以便更快地访问重复访问这些组件的查询。系统内存量较大的实例具有较大的缓冲池缓存,可以在本地存储更多的图形。用户可以通过监控中可用的缓冲区缓存命中和未命中指标来调整缓冲池缓存的适当量。 CloudWatch
如果缓存命中率持续降至 99.9% 以下,则可能需要增加实例的大小。这表明缓冲池不够大,引擎不得不更高效、更频繁地从底层存储卷提取数据。
其余三分之一的系统内存在各个查询执行线程之间均匀分布,一些内存留给操作系统,还有一个小型动态池供线程根据需要使用。每个线程的可用内存从一个实例大小略微增加到下一个实例大小,直至 8xl
实例类型,达到该大小后,每个线程分配的内存达到最大值。
当你遇到 OutOfMemoryException
(OOM) 时,才是添加更多线程内存的时候。OOM当一个线程需要的内存超过分配给它的最大内存时,就会发生异常(这与整个实例的内存耗尽不同)。
t3
和 t4g
实例类型
t3
和 t4g
实例系列为开始使用图形数据库以及初始开发和测试提供了一种低成本的选项。这些实例有资格享受 Neptune 免费套餐优惠
t3
和 t4g
实例仅在中型配置(t3.medium
和 t4g.medium
)中提供。
它们不适用于生产环境。
由于这些实例的资源非常有限,因此不建议将其用于测试查询执行时间或数据库整体性能。要评测查询性能,请升级到其它实例系列之一。
r4
实例类型系列
DEPRECATED— 该r4
系列是在 2018 年 Neptune 推出时推出的,但现在较新的实例类型提供了更好的性价比。从引擎版本 1.1.0.0 开始,Neptune 不再支持 r4
实例类型。
r5
实例类型系列
r5
系列包含内存优化型实例类型,适用于大多数图形用例。r5
系列包含的实例类型从 r5.large
直至 r5.24xlarge
。随着大小增加,它们的计算性能会线性扩展。例如,r5.xlarge
(4 vCPUs 和 32GiB 的内存)的和内存是r5.large
(2 vCPUs vCPUs 和 16GiB 的内存)的两倍,r5.2xlarge
(8 和 64GiB 的内存)的 vCPUs 和内存是两倍。 vCPUs r5.xlarge
您可以预期查询性能会随着计算容量而直接扩展,直至 r5.12xlarge
实例类型。
该r5
实例系列采用双插槽英特尔CPU架构。r5.12xlarge
和更小的类型使用单插槽和该单插槽处理器拥有的系统内存。r5.16xlarge
和 r5.24xlarge
类型使用这两个插槽和可用内存。由于在双插槽架构中,两个物理处理器之间需要一些内存管理开销,因此从 r5.12xlarge
扩展到 r5.16xlarge
或 r5.24xlarge
实例类型的性能增益并不像在较小大小上纵向扩展时那样线性。
r5d
实例类型系列
Neptune 具有查找缓存特征,可用于提高需要提取和返回大量属性值和文本的查询的性能。此特征主要由需要返回许多属性的查询的客户使用。查找缓存通过在本地提取这些属性值,而不是在 Neptune 索引存储中一遍又一遍地查找每个属性值,来提高这些查询的性能。
查找缓存是使用r5d
实例类型上的NVMe附加EBS卷来实现的。它是使用集群的参数组启用的。从 Neptune 索引存储中获取数据时,属性值RDF和文字将缓存在此卷中。NVMe
如果您不需要查找缓存特征,请使用标准 r5
实例类型而不是 r5d
,以避免更高的 r5d
成本。
r5d
系列的实例类型与 r5
系列的大小相同(从 r5d.large
到 r5d.24xlarge
)。
r6g
实例类型系列
Amazon 开发了自己的ARM基于 Gravitr6g
系列使用 Graviton2 处理器。在我们的测试中,Graviton2处理器在OLTP样式(受限)图形查询方面的性能提高了10-20%。但是,由于OLAP内存分页性能略低,Graviton2处理器的查询性能可能略低于英特尔处理器。
还需要注意的是,r6g
系列采用单插槽架构,这意味着随着计算容量从 r6g.large
到 r6g.16xlarge
(该系列中的最大类型),性能将线性扩展。
r6i
实例类型系列
Amazon R6i 实例
x2g
实例类型系列
当实例的缓冲池缓存较大时,某些图形用例的性能会更好。推出 x2g
系列是为了更好地支持这些用例。该x2g
家庭的 memory-to-vCPU比例大于r5
或r6g
家族。x2g
实例还使用 Graviton2 处理器,具有许多与 r6g
实例类型相同的性能特征,而且缓冲池缓存更大。
如果您是r5
CPU利用率低且缓冲池缓存错过率高的r6g
实例类型,请尝试改用该x2g
系列。这样,您无需为更多CPU容量付费即可获得所需的额外内存。
serverless
实例类型
Neptune 无服务器特征可以根据工作负载的资源需求动态扩展实例大小。Neptune Serverless 允许您为数据库集群中的实例设置计算容量的下限和上限(以 Neptune 容量单位衡量),而不是计算应用程序需要多少 vCPUs 容量。使用无服务器实例而不是预调配实例可以对具有不同利用率的工作负载进行成本优化。
您可以在同一个数据库集群中同时设置预调配实例和无服务器实例,以实现最佳性价比配置。