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

引入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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:20:00