Laravel项目在Kubuntu 21.04开发环境Docker部署下TTFB长达2分钟的性能问题求助
解决Kubuntu环境下Laravel容器动态请求2分钟TTFB的问题
这个刚好卡2分钟的首字节时间太典型了,十有八九是某个超时机制触发了。结合你说的静态文件响应快、同事环境正常的情况,咱们一步步排查:
1. 优先排查DNS解析超时
120秒刚好是很多系统DNS请求的默认超时上限,Laravel启动或处理请求时可能在做DNS解析(比如验证服务、加载远程依赖),而你的Kubuntu环境DNS配置可能出了问题:
- 先进入容器测试DNS速度:
如果这个命令卡顿很久,那DNS就是罪魁祸首。docker exec -it <你的容器ID> bash nslookup github.com - 解决办法:
- 启动容器时手动指定公共DNS:
docker run -it --dns=8.8.8.8 --volume=$PWD:/app -w=/app -p8000:8000 registry.gitlab.com/myImages/php-nginx:myLaravelApp php artisan serve --host=0.0.0.0 - 或者修改Docker全局DNS配置:编辑
/etc/docker/daemon.json(没有就新建),添加:
然后重启Docker服务:{"dns": ["8.8.8.8", "1.1.1.1"]}sudo systemctl restart docker
- 启动容器时手动指定公共DNS:
2. 检查本地目录挂载的权限与同步问题
你用了$PWD:/app挂载本地代码,Linux下Docker的volume挂载可能因为文件权限、文件系统同步(比如inotify)导致Laravel读取配置/路由文件时阻塞:
- 检查容器内代码目录的权限:
确保运行PHP的用户(通常是docker exec <容器ID> ls -l /appwww-data或root)对目录有读写权限,必要时用chmod或chown调整。 - 清理Laravel缓存,避免缓存文件加载异常:
docker exec <容器ID> php artisan config:clear docker exec <容器ID> php artisan route:clear - 试试用Docker卷替代本地挂载,排除文件系统差异:
如果速度正常,说明是本地文件系统和容器的兼容性问题。docker volume create laravel-dev-volume docker run -it --volume=laravel-dev-volume:/app -w=/app -p8000:8000 registry.gitlab.com/myImages/php-nginx:myLaravelApp bash # 进入容器后把你的代码复制到/app目录,然后启动服务 php artisan serve --host=0.0.0.0
3. 替换PHP内置服务器,用Nginx运行
php artisan serve用的是PHP单线程内置服务器,虽然方便但性能和稳定性都不如Nginx+PHP-FPM,而你的镜像已经包含Nginx了,直接用生产环境的运行方式试试:
- 确认容器内的Nginx配置已经指向Laravel的
public目录(通常镜像里已经配置好)。 - 启动容器时直接启动Nginx和PHP-FPM:
(注意端口映射改成8000:80,因为Nginx默认监听80端口)docker run -it --volume=$PWD:/app -w=/app -p8000:80 registry.gitlab.com/myImages/php-nginx:myLaravelApp
这种方式更接近生产环境,也能排除内置服务器的潜在问题。
4. 排查系统防火墙/网络规则
Kubuntu的UFW防火墙可能限制了容器的网络流量,导致Laravel的内部请求超时:
- 临时关闭UFW测试:
如果请求速度恢复,就需要添加允许容器网络的UFW规则。sudo ufw disable - 试试用host网络模式启动容器,绕过Docker的bridge网络:
(host模式下不用端口映射,直接访问localhost:8000即可)docker run -it --network=host --volume=$PWD:/app -w=/app registry.gitlab.com/myImages/php-nginx:myLaravelApp php artisan serve --host=0.0.0.0
先从DNS和挂载这两个方向入手,因为2分钟的超时太符合DNS解析失败的特征了,大概率能解决问题。
内容的提问来源于stack exchange,提问作者Mostafa Nobaqi
相关产品推荐
相关产品推荐

