内容提要
本文介绍了如何在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等。