Vapor:常见基础设施性能技巧

2021 年 6 月 11 日#vapor

Laravel Vapor 是一个基于 AWS 的无服务器 Laravel 部署平台。使用 Vapor,您可以快速设置一个无服务器基础设施,该基础设施可以自动扩展,无需服务器维护。

但是,虽然您可以使用 Vapor 在 Laravel 应用程序中实现极快的加载时间,但如果错误配置了基础设施,您可能会遇到性能问题。

在本文中,我们将介绍 Vapor **最常见的基础设施性能技巧**,这些技巧可以加速您的 Laravel 应用程序(由 Vapor 提供支持)。在我们深入研究之前,请记住

  1. **首先优化您的应用程序**:通过使您的应用程序更快,您可能根本不需要进行任何基础设施更改。识别应用程序性能瓶颈,并尝试使用缓存、排队或数据库查询优化等简单技术来解决它们。

  2. **基础设施更改可能会影响您的 AWS 账单**:当然,为您的 Vapor 环境分配更多(或不同的)资源可能会导致您的 AWS 账单增加。因此,您可能需要研究这种更改的定价将如何影响您的 AWS 账单:aws.amazon.com/pricing

好了,现在让我们谈谈最常见的基础设施性能技巧,这些技巧可以加速您的 Vapor 支持的 Laravel 应用程序

增加 memory 选项

image

Vapor - 通过 AWS Lambda - 按比例分配 CPU 能力给您的 Lambda 函数,该比例与为环境配置的内存量成正比。因此,增加内存可能会导致更好的性能,因为 Lambda 函数将拥有更多 CPU 能力来处理您的请求和排队作业。

您可以使用环境的 `vapor.yml` 配置文件中的 memoryqueue-memorycli-memory 选项分别增加 HTTP Lambda 函数、队列 Lambda 函数或 CLI Lambda 函数的配置内存。

增加 `warm` 选项

image

如果您在规模化部署后遇到性能问题,这可能表明您的环境没有预先预热足够的容器。因此,一些请求会在 AWS 加载无服务器容器以处理请求时产生几秒钟的延迟。

为了缓解这个问题(通常称为“冷启动”),Vapor 允许您在 `vapor.yml` 文件中为环境定义一个 warm 配置值。warm 值表示 Vapor 将预热多少个无服务器容器,以便它们可以随时准备处理请求。

使用“固定大小”数据库

image

无服务器数据库是自动扩展数据库,没有固定的 RAM 或磁盘空间。但是,AWS 提供的“自动扩展”机制每次环境需要更多数据库资源时都会产生长达几秒钟的冷启动时间。

为了缓解这个问题,请考虑使用“固定大小”数据库,其中资源已提前准备。您可以使用 Vapor UI 或 database CLI 命令 创建“固定大小”数据库

使用数据库代理

image

即使您的由 Vapor 支持的无服务器 Laravel 应用程序可以处理大量的网络流量,传统的关联数据库(如 MySQL)也可能因连接限制而不堪重负并崩溃。

为了缓解这个问题,Vapor 允许使用 **RDS 代理** 来有效地管理您的数据库连接,并允许比通常更多的连接。数据库代理可以通过 Vapor UI 或 database:proxy CLI 命令 添加

扩展现有的“固定大小”资源

image

如果您在规模化部署后遇到性能问题,这可能表明现有的资源(例如“固定大小”数据库或“固定大小”缓存)可能无法跟上您的应用程序管理的任务数量。

为了缓解这个问题,请考虑扩展现有的“固定大小”资源(如果有)。例如,您可以通过 Vapor UI 的数据库详细信息屏幕或 database:scale CLI 命令 扩展“固定大小”数据库

考虑使用 Redis 代替 DynamoDB

image

如果您的应用程序严重依赖缓存 - 这已经是大幅提升应用程序速度的好方法 - 使用 Redis 缓存而不是 DynamoDB 可以加快缓存 IO。

您可以使用 Vapor UI 或使用 cache CLI 命令 创建缓存

考虑使用 API Gateway v2 而不是 API Gateway v1

image

通过从 API Gateway v1 迁移到 API Gateway v2,您可以预期应用程序请求的延迟降低 50%。但是,API Gateway v2 是区域性的,这意味着来自与您的项目相距很远的区域的客户可能会受到此更改的负面影响。此外,某些功能(例如 Vapor 的托管防火墙)可能不可用。

如果您想 使用 API Gateway 2.0,您可以在环境的 vapor.yml 配置中指定 gateway-version: 2

联系 AWS 支持

Laravel Vapor 在 AWS 基础设施上配置和配置您的项目。但是,为了获得有关基础设施性能的见解,我们建议您联系 AWS 支持,因为他们可以深入检查基础设施的内部日志。

结论

我们希望您喜欢这篇关于 Laravel Vapor 最常见的基础设施性能技巧的文章。在 Laravel,我们致力于为您提供世界上最强大、最适合开发人员的 PHP 体验。如果您还没有尝试过 Vapor,现在是开始的好时机!您可以在今天创建您的帐户:vapor.laravel.com

作者:Nuno Maduro

Laravel 团队,Pest 的创建者。

关注 RSS Feed