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

Laravel Sail命令比Docker Compose慢的问题排查求助

Laravel Sail 在 WSL2 中执行命令存在10秒延迟,直接用Docker Compose则无此问题

问题描述

在Windows 11家庭版的WSL2实例中使用Laravel Sail,项目部署在WSL文件系统内。执行任意Sail命令前都会有约10秒延迟,但直接用Docker Compose执行相同命令仅需约1.5秒。

Docker Compose执行耗时:

$ time docker compose exec laravel.test php artisan

docker-compose exec laravel.test php artisan  0.04s user 0.02s system 1% cpu 3.323 total

Sail执行耗时:

$ time sail artisan

sh $([ -f sail ] && echo sail || echo vendor/bin/sail) artisan  0.27s user 0.29s system 5% cpu 9.623 total

奇怪的是,time命令显示Sail的用户态耗时仅0.27秒,但实际体感延迟远超过这个数值(有屏幕录制佐证)。此前使用Laravel Sail/Docker一切正常,查阅现有解决方案无效,不确定是机器配置还是软件版本问题。当前项目使用Laravel 9.x、Laravel Sail 1.41,更换WSL实例从Ubuntu 22.04到24.04后问题仍存在。

可能的原因及排查方向

  • Sail脚本前置检查卡顿:Sail启动脚本(vendor/bin/sail)包含一系列前置逻辑——检测WSL环境、验证Docker状态、读取.env配置、自动匹配容器名称等。其中某一步可能因WSL特性(如文件权限、环境变量解析慢、网络检测超时)导致延迟。可以直接查看脚本内容(cat vendor/bin/sail),逐段测试定位耗时步骤。
  • WSL2 DNS解析超时:Sail脚本可能涉及网络检测,而WSL2默认DNS配置易引发解析延迟。可修改WSL的DNS配置:编辑/etc/resolv.conf,将nameserver改为8.8.8.8或1.1.1.1,再执行sudo systemctl restart systemd-resolved(若使用systemd)。
  • 配置文件读取缓慢:Sail会读取.env文件,若文件过大、包含复杂逻辑,或WSL文件系统权限异常,可能导致读取卡顿。可临时重命名.env文件,测试Sail命令是否仍延迟,排除配置文件问题。
  • 版本兼容性问题:Laravel 9.x与Sail 1.41可能存在兼容性瑕疵。尝试降级或升级Sail版本(如composer require laravel/sail:^1.30),验证是否解决延迟。
  • WSL2资源分配不足:若WSL2分配的内存/CPU过少,脚本执行时会因资源不足卡顿。在Windows的.wslconfig文件中调整资源:
    [wsl2]
    memory=8GB
    processors=4
    
    修改后执行wsl --shutdown重启WSL再测试。
  • Shell环境加载耗时:Sail通过sh执行,若你的shell(bash/zsh)配置文件(.bashrc/.zshrc)加载大量插件或耗时脚本,每次执行Sail都会重新加载这些配置,引发延迟。可尝试用sh -n vendor/bin/sail artisan测试,或临时重命名shell配置文件验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:37:44