Laravel 使用 octane,请求超时 (已解决)
1. 环境说明
1、laravel
版本10.10.1
2、laravel/octane
版本2.1.1
3、OCTANE_SERVER
使用的是 swoole
服务器
1. 问题描述?
1、请求的Url
# post请求,form数据{intro}
curl -X POST "http://xxxx.com/admin/designer.group_chat_list/edit?id=1" -d "notice=$notice"
2、参数设置
php:post_max_size = 8M
mysql:notice text COMMENT '群公告'
'swoole' => [
'options' => [
'log_file' => storage_path('logs/swoole_http.log'),
'package_max_length' => 10 * 1024 * 1024,
],
],
3、问题截图
请求体除了 notice
的数据长度不一样,其他一致,最终结果是没有Response响应,请求超时
2. 自身排查过程
/**
* vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
*/
protected function sendRequestThroughRouter($request)
{
$this->app->instance('request', $request);
Facade::clearResolvedInstance('request');
### 打印日志
logger()->info('request', [$request->all(), $request->url()]);
$this->bootstrap();
return (new Pipeline($this->app))
->send($request)
->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
->then($this->dispatchToRouter());
}
// 动态路由 (匹配 secondary/controller.action)
Route::match(['get', 'post'], '/{secondary}.{controller}/{action}', function ($secondary, $controller, $action) {
$namespace = config('admin.controller_namespace') . $secondary . '\\';
$controller = array_reduce(array_filter(explode('_', $controller)),function ($carry,$item){
return $carry . ucfirst($item);
},'');
$className = $namespace . ucfirst($controller . "Controller");
### 打印日志
logger()->info('route', [$className, $controller, $action]);
if (class_exists($className)) {
$controller = App::make($className);
return App::call([$controller, $action]);
}
return abort(404);
});
# 正常请求日志
[2024-03-06 21:09:48] test.INFO: request [{"id":"1","notice":"Spring Festival","_token":"nFuRJdToJdPTKtV63PXYasX9pSnMAypoRHj63q7C"},"/admin/designer.group_chat_list/edit"]
[2024-03-06 21:09:48] test.INFO: route ["App\\Http\\Controllers\\admin\\designer\\GroupChatListController","GroupChatList","edit"]
# 异常请求日志
[2024-03-06 21:12:05] test.INFO: request [{"id":"1","notice":"Spring FestivalSpring......Festival","_token":"nFuRJdToJdPTKtV63PXYasX9pSnMAypoRHj63q7C"},"/admin/designer.group_chat_list/edit"]
最终排查的结果是,异常请求无法正常的到达路由,目前没有思绪往下排查了,有没有遇到这类问题的同志可以指导一下 –
3. 问题所在
- 大致的排查出原因了,跟系统环境有关系,test内网环境使用的是
Ubuntu 22.04.2 LTS
, pre环境使用CentOS Linux 7
, 算是基本解决了,但还没具体分析出是什么系统参数设定导致的
配置下 package_max_length 文档入口 learnku.com/docs/laravel/9.x/octan...
抓包看一下
swoole的版本是多少