为什么如果服务(接口)长时间不调用,那么首次调用响应时间就比较长

qq7467466

问题描述

不知道你们发现没, 如果服务(接口)长时间不调用,那么首次调用响应时间就比较长

我有一个接口正常响应是20ms, 如果一两个小时不调用再次调用的时候时长有时候会到500ms或者1s, 这是为很么呢

其他情况说明

那个服务只对外提供刚刚那一个接口, 没有其他额外的接口

问题复现

增加了nginx代理(代理方式是按照官方文档提供的)之后第一次访问会明显的较慢, 直接访问端口却没有任何问题

573 5 0
5个回答

six

执行 strace -ttp pid,然后访问接口,看系统调用能看出来慢在哪里

  • 暂无评论
adobe

是不是有什么这接口有什么数据需要初始化,长时间不用,就会断线,重连需要时间

  • qq7467466 2023-08-15

    没, 我发现我所有的项目都是这个情况, 一个小时不调用, 再次调用的话接口响应时间明显会变长, 第二次就好了

JackDx

我也是,可能是什么缓存?还是链接数据库或者redis网络开销了?

  • qq7467466 2023-08-15

    我这边定位到了是nginx代理后有延迟了, 你那边是这样的情况吗

小W

直接访问项目ip+端口,再访问nginx代理后的地址看看是不是因为nginx代理后变慢

  • qq7467466 2023-08-15

    我刚试了, 还真的是访问了nginx代理之后第一次访问会明显的较慢, 直接访问端口没有任何问题

小W
  1. 把nginx的worker_processes设置为1,重启nginx
  2. 查看nginx worker 进程的pid
  3. strace -ttTp [上面的pid], 查看请求具体的耗时
  • 暂无评论
🔝