Performance 使用nestjs和graphql研究响应序列化的性能

Performance 使用nestjs和graphql研究响应序列化的性能,performance,nestjs,apollo-server,Performance,Nestjs,Apollo Server,我正在研究nodejs后端序列化的性能问题。我想要一些关于如何调查服务中的应用程序逻辑返回其响应后发生的事情的建议 目前,使用typeorm执行的错误查询返回大约12000行。这个查询的速度不是问题,但是当从服务返回结果时,api实际返回响应大约需要100秒。应用程序正在使用nestjs和graphql作为api 我猜apollo服务器或nestjs中都完成了大量的序列化。我如何进一步调查这一点?数据库查询的大容量是这里唯一的问题,还是其他问题 这里真正的问题是,这将阻塞nodejs的事件循环大

我正在研究nodejs后端序列化的性能问题。我想要一些关于如何调查服务中的应用程序逻辑返回其响应后发生的事情的建议

目前,使用typeorm执行的错误查询返回大约12000行。这个查询的速度不是问题,但是当从服务返回结果时,api实际返回响应大约需要100秒。应用程序正在使用nestjs和graphql作为api

我猜apollo服务器或nestjs中都完成了大量的序列化。我如何进一步调查这一点?数据库查询的大容量是这里唯一的问题,还是其他问题


这里真正的问题是,这将阻塞nodejs的事件循环大约100秒,这将冻结整个后端。

您确定正在执行的实际查询只返回12000行,还是12000行只是最终从API返回的数字

很可能您将返回更多的行到NestJS后端,然后需要将这些行规范化为从API接收的实际结果集。这是一个很容易遇到的问题,如果您正在进行大量的连接,并且与的概念有关

在过去,我遇到了一个类似的问题,API的结果集只返回了几千行,但超过40万行被发送回TypeORM,然后TypeORM必须适当地将它们展平,从而导致您遇到的性能问题


我强烈建议您检查生成的SQL以查找有问题的查询,然后在DB上手动运行,以查看实际返回的行数。

谢谢您的建议!我可以确定,大部分时间不是花在Typeorm上,而是在服务返回响应之后。当实现使用相同服务的REST端点时,它工作得更快。如果我通过解析器以纯JSON的形式返回响应,我还可以大大提高速度,这让我认为问题在于apollo服务器。