Laravel 10请求受限:每秒仅处理5-7次,求解决方案
Laravel 10并发请求限制排查与解决建议
问题背景
使用Laravel 10.13.5开发Web应用,控制器仅返回空数组(无额外业务逻辑),用Apache JMeter测试100个并发请求时,发现请求被限制/拦截,每秒仅能处理5-7次,速度极慢。本地环境采用php artisan serve运行,配置为PHP 8.2.5、Windows 10 64位(16GB DDR4内存、Intel i7-7500U CPU)。
已尝试的无效操作
- 注释
app/Http/Kernel.php中的throttle中间件 - 修改
.env文件设置APP_DEBUG=false - 调整
RouteServiceProvider.php中的限流规则 - 执行
php artisan optimize:clear清除缓存 - 对路由和配置进行缓存操作
关键差异现象
切换到原生PHP Web服务器(执行命令php -S 0.0.0.0:8000)时,并发请求处理正常,可每秒处理多个请求,符合预期效果;仅使用php artisan serve时出现请求限制/拦截问题。
可能的解决方向
1. 认清php artisan serve的设计局限
php artisan serve本质是封装了原生PHP开发服务器,默认以单进程模式运行,同一时间仅能处理一个请求,这是它的开发工具属性限制,并非Laravel框架的限流机制。它只适合本地开发调试,不适合做并发压力测试,建议改用Apache、Nginx等生产级Web服务器进行测试。
2. 排查Windows环境下的文件阻塞问题
Windows文件系统的锁机制可能导致Laravel在单进程服务器下,因并发读写缓存、日志文件而阻塞请求:
- 临时修改
.env设置LOG_CHANNEL=null关闭日志写入 - 将缓存驱动改为内存级驱动,设置
CACHE_DRIVER=array,避免磁盘IO等待
3. 检查全局中间件与第三方包
- 确认
app/Http/Kernel.php的api中间件组中,是否存在除throttle外的其他可能阻塞请求的中间件(如未正确排除的VerifyCsrfToken) - 排查是否安装了第三方限流、监控类Composer包,这类包可能自动添加了全局限制
4. 重置路由与中间件配置
执行以下命令彻底重置配置,避免缓存残留:
php artisan route:clear php artisan config:clear php artisan middleware:clear
内容的提问来源于stack exchange,提问作者AIRGG
相关产品推荐
相关产品推荐

