You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure中Laravel扩缩容导致队列任务执行时dotenv变量返回null

Azure负载均衡Laravel多租户应用队列任务10%失败:SQL连接127.0.0.1异常(怀疑扩缩容导致)

环境信息

  • PHP 8.0
  • Laravel 8.83.23
  • Azure负载均衡Web应用实例
  • nginx:latest(数月前升级至PHP 8.0)

问题现象

我有一个部署在Azure负载均衡Web应用上的多租户应用,当前遇到的问题是:90%的队列任务可正常执行,但有10%会失败,仅队列任务出现该问题,所有请求均无异常。失败时具体报错为SQL连接异常(连接127.0.0.1失败)。目前暂未明确原因,但怀疑与Azure实例的扩缩容有关。

当前配置与排查情况

数据库连接配置

我通过中间件动态配置数据库连接,代码如下:

config()->set('database.connections.company', [
    'driver' => 'pgsql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '5432'),
    'database' => $db_name,
    'username' => env('DB_USERNAME', ''),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'prefix' => '',
    'prefix_indexes' => true,
    'schema' => 'public',
    'sslmode' => env('DB_SSLMODE', 'prefer'),
]);

部署与缓存处理

我们通过CI/CD流程将.env文件复制到Azure服务器,启动脚本执行以下命令解决过之前的缓存镜像问题:

php artisan optimize:clear
php artisan cache:clear

推测与尝试

我查阅资料后认为这可能是竞态条件导致的,推测执行失败任务的服务器未正确获取到.env文件,因此env()变量返回了默认值127.0.0.1。

曾尝试用Azure配置中的服务器属性存储环境变量,但并未解决问题。

提问

  1. 有没有人遇到过Azure上Laravel的此类扩缩容相关的队列任务问题?
  2. 有没有无状态的替代方案来存储这些配置信息?

内容的提问来源于stack exchange,提问作者Jaquarh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:10:27