选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在函数中管理 Gremlin WebSocket 连接 AWS Lambda

聚焦模式
在函数中管理 Gremlin WebSocket 连接 AWS Lambda - Amazon Neptune

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

如果您使用 Gremlin 语言变体来查询 Neptune,则驱动程序将使用连接连接到数据库。 WebSocket WebSockets 旨在支持长期存在的客户机-服务器连接方案。 AWS Lambda另一方面,它旨在支持相对短期和无国籍的处决。在使用 Lambda 查询 Neptune 时,这种设计理念的不匹配可能会导致一些意想不到的问题。

AWS Lambda 函数在执行环境中运行,该环境将该函数与其他函数隔离开来。执行上下文是在第一次调用该函数时创建的,并且可以重用于后续调用同一函数。

但是,任何一个执行上下文都不会用于处理函数的多个并发调用。如果您的函数由多个客户端同时调用,Lambda 会为该函数的每个实例启动一个额外的执行上下文。反过来,所有这些新的执行上下文可重用于该函数的后续调用。

在某个时候,Lambda 会回收执行上下文,尤其是在它们已经处于非活动状态一段时间的情况下。 AWS Lambda 通过 Lambda 扩展公开执行上下文生命周期,包括InvokeShutdown阶段。Init使用这些扩展,您可以编写在回收执行上下文时清理外部资源(例如数据库连接)的代码。

常见的最佳实践是在 Lambda 处理程序函数之外打开数据库连接,以便每次调用处理程序时都可重用该连接。如果数据库连接在某个时候断开,则可以从处理程序内部重新连接。但是,这种方法存在连接泄露的危险。如果空闲连接在执行上下文被破坏后很长一段时间仍处于打开状态,则间歇性或突发性 Lambda 调用场景可能会逐渐泄漏连接并耗尽数据库资源。

随着更高的引擎版本推出,Neptune 连接限制和连接超时已发生变化。以前,每个实例最多支持 60,000 个 WebSocket连接。现在,每个 Neptune 实例的最大并发 WebSocket 连接数因实例类型而异

此外,从引擎版本 1.0.3.0 开始,Neptune 将连接的空闲超时从一小时缩短到大约 20 分钟。如果客户端没有关闭连接,则在空闲超时 20 到 25 分钟后,连接会自动关闭。 AWS Lambda 没有记录执行上下文的生命周期,但实验表明,新的 Neptune 连接超时与非活动的 Lambda 执行上下文超时非常吻合。当不活跃的执行上下文被回收时,Neptune 很有可能已经关闭了它的连接,或者很快就会关闭。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。