Vapor:现已支持 Octane

2021 年 10 月 4 日#vapor

今天我们很高兴地宣布,Octane 支持现已在 Laravel Vapor 中可用。速度提升简直令人难以置信,所以系好安全带,让我们深入了解细节。

如果您还没有听说过 Octane,它是一个 Laravel 库,它通过一次启动您的应用程序,将其保存在内存中,然后以超音速的速度向其提供请求,从而极大地提高了应用程序的性能。

现在,将 Octane 与 Vapor 的按需自动扩展相结合,您可以在任何规模下获得极快的加载时间。让我们看看在 Amazon 的 us-west-1 区域上使用 Vapor 项目的一些数字。此 Vapor 应用程序配置了 1024 MB 的 RAM 和一个 RDS MySQL 实例 (db.t2.micro),它具有 1 个 VCPU 和 1Gib 的 RAM。

首先,让我们看看从数据库获取用户的 API 端点。使用 Octane,此端点快了 7 倍,内存使用量减少了 44%:

# Before Vapor's Octane integration
Request Duration: 39.40 ms, Memory Used: 169 MB
Request Duration: 40.20 ms, Memory Used: 169 MB
Request Duration: 37.71 ms, Memory Used: 169 MB
Request Duration: 42.16 ms, Memory Used: 169 MB
Request Duration: 40.60 ms, Memory Used: 169 MB
Request Duration: 45.75 ms, Memory Used: 169 MB

# After Vapor's Octane integration
Request Duration: 6.78 ms, Memory Used: 112 MB
Request Duration: 6.64 ms, Memory Used: 112 MB
Request Duration: 6.67 ms, Memory Used: 112 MB
Request Duration: 6.38 ms, Memory Used: 112 MB
Request Duration: 6.75 ms, Memory Used: 112 MB
Request Duration: 6.47 ms, Memory Used: 112 MB

接下来,让我们看看渲染静态模板的“登录”路由。使用 Octane,此端点快了近 3 倍,内存使用量减少了 35%:

# Before Vapor's Octane integration
Request Duration: 11.32 ms, Memory Used: 165 MB
Request Duration: 11.35 ms, Memory Used: 165 MB
Request Duration: 11.29 ms, Memory Used: 165 MB
Request Duration: 11.29 ms, Memory Used: 165 MB
Request Duration: 11.36 ms, Memory Used: 165 MB
Request Duration: 11.43 ms, Memory Used: 165 MB

# After Vapor's Octane integration
Request Duration: 4.89 ms, Memory Used: 108 MB 
Request Duration: 4.89 ms, Memory Used: 108 MB 
Request Duration: 4.83 ms, Memory Used: 108 MB 
Request Duration: 4.66 ms, Memory Used: 108 MB 
Request Duration: 4.79 ms, Memory Used: 108 MB 
Request Duration: 4.91 ms, Memory Used: 108 MB

如您所见,使用 Octane 可以减少请求持续时间和内存使用量。当然,由于 AWS 对 Lambda 应用了 1 毫秒的计费粒度,因此您将为 HTTP 函数支付更少的费用。

如何开始

首先,确保您使用的是最新版本的 Laravel、Vapor Core 和 Vapor CLI

接下来,在您的 Vapor 项目中安装 Octane。Octane 可以通过 Composer 包管理器安装

composer require laravel/octane

安装 Octane 后,您可以执行 octane:install Artisan 命令,该命令会将 Octane 的配置文件安装到您的应用程序中

php artisan octane:install

接下来,如果您之前在应用程序中没有尝试过 Octane,您可能需要在本地进行测试。当然,不要忘记查看重要的 Octane 文档 主题,例如 依赖注入内存泄漏管理

最后,您可以在应用程序的 vapor.yml 文件中设置 octane 配置选项,指示 Vapor 使用 Octane。

id: 1
name: my-application
environments:
    staging:
        memory: 1024
        runtime: 'php-8.0:al2'
        octane: true

此外,如果您的项目使用数据库,您可以使用 octane-database-session-persistoctane-database-session-ttl 选项指示 Octane 在请求之间重用数据库连接。

        database: my-database
        octane: true
        octane-database-session-persist: true
        octane-database-session-ttl: 10

我们建议您指定 octane-database-session-ttl;否则,Lambda 容器将一直保持连接到您的数据库,直到 Lambda 容器被销毁。这可能需要几分钟,并可能导致您的数据库因活动连接过多而不堪重负。

请查看 Vapor 的 Octane 集成文档 以了解更多详细信息。

结论

此外,我们要感谢 Aaron Francis,感谢他提出的建议和 最初的探索,使 Octane 能够在 Vapor 上运行。我们关心并研究社区提出的每一个建议。

我们希望您喜欢这个新功能。在 Laravel,我们致力于为您提供世界上最强大、最友好的 PHP 开发体验。如果您还没有尝试过 Vapor,现在是一个好时机!您今天就可以在:vapor.laravel.com 创建您的帐户。

作者:Nuno Maduro

Laravel 团队,Pest 的创造者。

关注 RSS Feed