Experimental feature in GraalVM

部署 TruffleRuby

如果您正在尝试将 TruffleRuby 部署到生产环境,我们建议您与我们联系,以便我们帮助您了解目前可能的功能,并帮助您解决任何问题。

本文档详细介绍了 TruffleRuby 的不同运行时配置。

TruffleRuby 运行时配置 #

TruffleRuby 主要有两种配置 - 原生JVM。了解 TruffleRuby 的不同配置非常重要,因为每种配置都有不同的功能和性能特性。您应该选择适合您的应用程序的执行模式。

原生配置 #

在原生独立模式下,TruffleRuby 在原生配置中运行。在此配置中,TruffleRuby 会提前编译成独立的原生可执行文件。这意味着您无需在系统上安装 JVM 即可使用它。

原生配置的优点是它 启动速度与 MRI 相当,它可能使用更少的内存,并且比JVM配置更快地达到快速状态。缺点是您无法使用 Java 工具(例如 VisualVM),它不利于 Java 交互操作(有关详细信息,请 参见此处),并且峰值性能可能低于 JVM

原生配置是默认使用的配置,但您也可以使用 `--native` 请求它。要在原生配置中使用多语言编程,您需要传递 `--polyglot` 标志。

JVM 配置 #

TruffleRuby 也可以在JVM配置中使用(通过使用 JVM 独立模式或通过嵌入),它在 JVM 上作为普通的 Java 应用程序运行。JVM 配置的优点是您可以轻松使用 Java 交互操作,并且峰值性能可能高于原生配置。缺点是它启动和达到快速状态需要更长的时间,并且可能使用更多的内存。您可以通过传递 `--jvm` 来选择 JVM 配置。

选择最佳配置 #

如果您正在运行短时间运行的程序,您可能需要使用默认的原生配置。如果您正在运行长时间运行的程序,并且想要获得最高的性能,您可能需要使用JVM配置,通过使用 `--jvm`。

获得最佳启动时间性能 #

在大多数情况下,要获得最佳的启动时间,您需要使用原生配置,这是默认配置。

获得最低内存占用量 #

要获得最低内存占用量,您可能最初需要使用原生配置,但是当您拥有更大的工作集对象时,您可能会发现,更简单的垃圾收集器和当前缺乏压缩的普通对象指针 (OOPS) 实际上会增加您的内存占用量,并且您最好使用 JVM 配置,通过使用 `--jvm` 来减少内存使用。

从 TruffleRuby 获得最佳峰值性能 #

要从 TruffleRuby 获得长时间运行应用程序的最佳峰值性能,在大多数情况下,我们建议使用 JVM 配置,并使用 `--jvm`。

但是,要达到此峰值性能,您需要预热 TruffleRuby,就像您对大多数高度优化的虚拟机所做的那样。这是通过在负载下运行应用程序一段时间来完成的。如果您监控性能(通过测量操作时间或响应时间),您会发现它会随着时间的推移而降低,然后可能会稳定下来。

日志记录 #

Ruby 应用程序日志记录和警告与 Ruby 的标准实现相同。

对于 TruffleRuby 内部日志记录,使用标准 Java 日志记录。可以使用 `--log.level=INFO`、`=FINEST` 等来设置日志记录级别。

联系我们