spring Sping Boot 解决延迟问题

4nkexdtk  于 6个月前  发布在  Spring
关注(0)|答案(1)|浏览(121)

我发现我们的服务有延迟问题,每个读语句都需要超过40毫秒。
我尝试使用原生/派生查询,它总是需要超过40毫秒。
阅读数据真的很快,它是采取低于1毫秒,但从日志我可以看到,建立grcp连接到扳手需要大部分时间。
来自阅读的日志

10:16:36.485 [http-nio-8080-exec-2] [,] DEBUG o.s.web.servlet.DispatcherServlet - GET "/test", parameters={}
10:16:36.485 [http-nio-8080-exec-2] [,] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to edu.Controller#test()
10:16:36.485 [http-nio-8080-exec-2] [,] DEBUG o.s.o.j.s.OpenEntityManagerInViewInterceptor - Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
10:16:36.485 [http-nio-8080-exec-2] [,] DEBUG c.g.c.s.d.s.c.SpannerTransactionManager - Creating new transaction with name [Repository.findById]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly
10:16:36.485 [http-nio-8080-exec-2] [,] DEBUG c.g.c.s.d.s.core.SpannerTemplate - Executing read on table test_table with keys: {[6fb703b4-59b4-4381-abd5-0594924c093c]} and columns: id, name
10:16:36.485 [http-nio-8080-exec-2] [,] DEBUG c.g.c.s.d.s.core.SpannerTemplate - Read elapsed milliseconds: 0
10:16:36.487 [grpc-default-worker-ELG-1-5] [,] DEBUG i.g.n.s.i.g.netty.NettyClientHandler - [id: 0xea23po983, L:/192.168.1.1:50000 - R:spanner.googleapis.com/200.200.200.200:443] OUTBOUND HEADERS: streamId=11 headers=GrpcHttp2OutboundHeaders[:authority: spanner.googleapis.com:443, :path: /google.spanner.v1.Spanner/BeginTransaction, :method: POST, :scheme: https
10:16:36.487 [grpc-default-worker-ELG-1-5] [,] DEBUG i.g.n.s.i.g.netty.NettyClientHandler - [id: 0xea23po983, L:/192.168.1.1:50000 - R:spanner.googleapis.com/200.200.200.200:443] OUTBOUND DATA: streamId=11 padding=0 endStream=true
10:16:36.525 [grpc-default-worker-ELG-1-5] [,] DEBUG i.g.n.s.i.g.netty.NettyClientHandler - [id: 0xea23po983, L:/192.168.1.1:50000 - R:spanner.googleapis.com/200.200.200.200:443] INBOUND HEADERS: streamId=11 headers=GrpcHttp2ResponseHeaders[:status: 200, content-type: application/grpc]

字符串
从最后两个日志的时间戳中可以看出,它需要39毫秒,我尝试使用只读事务,在没有事务的情况下进行读取,将SpannerTemplate上的RCP优先级设置为低,但没有任何帮助,并且简单调用rest端点,它通过id获取对象,当从db阅读花费不到0毫秒时,需要超过40毫秒。
有没有人遇到过类似的问题?我如何修复/调整?

mrzz3bfm

mrzz3bfm1#

如果你也能分享一个你正在执行的代码的例子,那将是非常有帮助的。
一般而言:
1.第一次创建Cloud Spanner客户端并执行查询时,客户端将在内部创建会话池并建立与Cloud Spanner的连接。这是一个繁重的操作,可能需要“长”时间(数十毫秒)。初始化异步发生。如果尚未完成,查询将不得不等待此操作完成。
1.您在同一Cloud Spanner客户端上执行的第二个和进一步的查询将使用已经创建的会话池和到Cloud Spanner的连接。这意味着第二个和进一步的查询应该更快。

相关问题