在AWS Lambda和PlanetScale上无服务器的Laravel应用

在AWS Lambda和PlanetScale上无服务器的Laravel应用

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

本文介绍了如何在AWS Lambda上无服务器地部署Laravel应用,并与PlanetScale数据库连接。通过使用Bref简化配置,创建新项目并进行负载测试,展示了Laravel的自动扩展能力和性能优化。使用Laravel Octane显著提高了请求处理速度。

🔎

延伸解读

无服务器部署的适用场景

文章指出,Laravel 等 PHP 应用通常部署在服务器上,但也可在 AWS Lambda 上无服务器运行。这种方式带来自动扩展、冗余基础设施和按请求计费等优势。对于流量波动大或希望减少运维复杂度的团队,这种方案值得考虑。不过,文章也提到冷启动可能影响首次请求,需结合业务容忍度评估。

负载测试结果解读

在负载测试中,Laravel 瞬间扩展到每分钟 3,800 个 HTTP 请求,100% 请求成功,p50 执行时间 75ms,p95 低于 130ms。PlanetScale 处理高达 180 查询/秒,中位查询时间 0.3ms。这些数据表明,无服务器架构能应对突发流量,且数据库性能未成为瓶颈。但测试基于新部署应用,冷启动仅影响 1% 请求,实际长期运行可能不同。

使用 Laravel Octane 优化性能

由于 PHP 默认在请求结束后关闭数据库连接,而 Laravel 连接 PlanetScale 需 SSL,连接建立可能比查询本身更耗时。启用 Laravel Octane 后,应用常驻内存并复用 SQL 连接,p50 执行时间从 75ms 降至 14ms,p95 低于 35ms。Bref 原生支持 Octane,只需调整 serverless.yml 配置。对于延迟敏感的应用,这是有效的优化手段。

部署与配置注意事项

文章强调,连接 PlanetScale 时必须设置 MYSQL_ATTR_SSL_CA 环境变量,且 AWS Lambda 中的证书路径为 /opt/bref/ssl/cert.pem,与本地不同。若使用分片键空间,DB_DATABASE 需设为 @primary 以路由到正确分片。此外,可通过 serverless bref:cli 运行迁移和填充命令。这些细节对成功部署至关重要,忽略可能导致连接失败。

❓

Q&A

如何在AWS Lambda上部署Laravel应用?

可以使用Bref简化Laravel在AWS Lambda上的配置,创建新项目并进行负载测试。

使用PlanetScale数据库的好处是什么?

PlanetScale与无服务器Laravel应用配合使用,提供高效的MySQL数据库连接和自动扩展能力。

Laravel在负载测试中的表现如何?

在负载测试中,Laravel能够瞬间扩展到每分钟3,800个HTTP请求,95%的请求处理时间低于130毫秒。

如何提高Laravel应用的请求处理速度?

使用Laravel Octane可以提高请求处理速度,减少SSL连接时间,PHP执行时间从75毫秒降至14毫秒。

在AWS Lambda上部署Laravel需要哪些前置条件?

需要一个AWS账户和安装serverless CLI,并通过AWS访问密钥配置CLI。

如何配置Laravel与PlanetScale数据库的连接?

在Laravel的.env文件中设置数据库连接信息,包括DB_CONNECTION、DB_HOST、DB_DATABASE等。

🏷️

标签

➡️

继续阅读