引入lighthouse-php GraphQL包后响应过慢问题排查求助
GraphQL接口响应耗时过长排查(Lighthouse-PHP + Docker + MongoDB)
我使用lighthouse-php包实现GraphQL服务,部署在Docker(PHP+MongoDB)环境中。针对单个集合编写的简单查询响应耗时超过2000ms,添加分页逻辑后耗时依旧居高不下。
经调试确认:数据库查询仅耗时7ms,但整体请求耗时过长。已排查Docker卷配置正常,排除vendor目录问题;项目中其他REST接口响应耗时均正常,仅GraphQL接口存在异常,不确定这是GraphQL的正常特性还是实现环节存在问题。
查询定义
type Query { resultPages(filters: FilterInput, page: Int, limit: Int): ResultPagesPagination @field(resolver: "App\GraphQL\Resolvers\ResultPagesResolver@ResultPages") }
Resolver代码
public function ResultPage($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) { $query = ResultPage::query(); if (isset($args['filters']) && isset($args['filters']['rules'])) { $this->applyFilters($query, $args['filters']['rules'], $args['filters']['combinator'] ?? 'and'); } // Pagination $page = $args['page'] ?? 1; $pageSize = $args['limit'] ?? 10; $totalResults = $query->count(); $data = $query->skip(($page - 1) * $pageSize) ->take($pageSize) ->get(); return [ 'data' => $data, 'currentPage' => $page, 'totalPages' => ceil($totalResults / $pageSize), 'totalCount' => $totalResults ]; }
附Clockwork性能分析截图显示:请求整体耗时远高于数据库查询耗时(数据库查询仅7ms)。
内容的提问来源于stack exchange,提问作者Bilal Sarwar
相关产品推荐
相关产品推荐

