network发现文件请求时间很久

164 阅读4分钟

背景

客户反馈,部署在华为云的系统(称为A系统)进入页面时会转圈,响应很慢,让我们解决一下。

过程

  1. 首先,我们打开了 Network 发现有一些文件 js 的大小大概是 1.7M,响应时间是 8s。而在我们公司内部部署的测试系统(称为B系统),相同文件的响应时间却只需要0.8s。

  2. 我们一开始想到是 nginx是否开启gzip 并配置正确的问题,通过查看 Network的响应头,我们看到A系统,B系统已经开启了gzip,并且由于文件大小相同,所以也大概确定nginx配置完全一样。 image.png

  3. 紧接着,我们怀疑是 网络请求 的问题(比如A系统每个文件其实响应时间都跟B系统大概都有10倍的差额,但是由于木桶原理,所以感觉不明显)。所以我们把华为云的网络速度由 5M改到50M,但是请求时间依旧不变。

  4. 接着,我们继续排查 https证书问题 以及 域名问题,由于A系统绑定了https证书,以及挂载了域名,网上也说了,https的加密会影响50%的效率,虽然跟10倍相差很大,但是还是进行了排查,我们通过华为云的内网ip进入访问,但是响应速度依旧没有改变。

  5. 最后,我们逐步排查华为云的配置,发现 前端服务器的cpu核数 分配较少,只有0.03核,我们将其提升到1核A系统速度就变正常了。

结论

在本例子中,由于已经正确配置了nginx,配置了https证书,网络请求速度也达到5M的情况下,发现最终影响速度是前端服务器CPU的核数。通过gpt的回答,也了解相关问题:

部署前端服务器的 CPU 核数对 Web 系统请求接口的响应速度有重要影响,特别是在高负载情况下。较低的 CPU 核数可能会导致系统的响应速度明显下降。


GPT对于核数相关回答:

  1. 并发处理能力:CPU 核数决定了服务器能够同时处理的并发请求数量。每个请求需要一定的 CPU 时间来执行,包括处理请求、执行应用程序代码、访问数据库等。当并发请求超过服务器可用的 CPU 核数时,请求将排队等待处理,从而导致响应速度变慢。
  2. 线程和进程管理:Web 服务器通常使用多线程或多进程来同时处理多个请求。每个线程或进程需要占用 CPU 核心。较低的 CPU 核数可能导致服务器无法创建足够的线程或进程来同时处理请求,从而降低了并发性,影响响应速度。
  3. 负载均衡:在多核 CPU 上,负载均衡器可以更有效地分发请求到不同的核心,以提高性能。较低的 CPU 核数限制了负载均衡的效果,可能导致某些核心过度使用,而其他核心相对空闲。
  4. 排队和等待:当请求超过服务器的处理能力时,请求将排队等待处理。这会导致请求的等待时间增加,从而使响应速度变慢。
  5. 竞争条件:在多核 CPU 上,线程或进程之间可能会竞争 CPU 核心。较低的 CPU 核数可能导致更多的竞争条件,影响了处理请求的效率。

为解决这些问题,可以考虑以下措施:

  1. 升级服务器:如果服务器的 CPU 核数明显不足,考虑升级到具有更多 CPU 核心的硬件。这将提高服务器的并发处理能力。
  2. 优化代码:优化应用程序代码,以减少每个请求所需的 CPU 时间。避免低效的算法和操作,优化数据库查询和资源加载。
  3. 负载均衡:使用负载均衡器来分发请求到多台服务器,从而分散负载。这有助于提高系统的可伸缩性和性能。
  4. 缓存:实施适当的缓存策略,以减轻服务器的负担。缓存可以减少对后端资源的频繁访问,从而提高响应速度。
  5. 监控和调整:使用监控工具来跟踪服务器性能,及时发现问题并进行调整以优化性能。

综上所述,CPU 核数是影响前端服务器响应速度的重要因素之一。确保服务器具有足够的 CPU 核数和适当的配置,以满足系统的性能需求。