栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【HBZ分享】调接口的时候,如果服务器一直没响应 如何解决?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【HBZ分享】调接口的时候,如果服务器一直没响应 如何解决?

导致请求超时的情况

前言
防止客户端无限等待,所以要设置响应超时时间,防止客户端被长时间卡在等待响应中

  1. 客户端–>服务端的网络问题,网络导致的请求 或 响应无法及时完成
    解决方案:
    设置好超时时间,防止长时间阻塞客户端。

  2. 服务端代码逻辑中有http请求去调用第三方导致响应慢
    解决方案:
    这种调用第三方超时问题建议放到MQ中进行异步操作,比如发送短信,邮箱等操作

  3. 代码性能很低
    解决方案:
    优化代码,注意死循环,冗余累赘代码等耗费性能。考虑下是否开启线程过多,没使用线程池操作线程。或者同步调用链太长,可以考虑无关紧要的部分放到MQ来异步操作

  4. Mysql存在慢查询 或 数据量过大导致查询慢
    解决方案:
    优化SQL, 检查是否使用了索引。并且是否正确的走了索引,是否存在令索引失效的语句等。如果是因为数据量问题,或者表结构设计导致多表关联太多而查询慢,可以考虑结合redis,把数据存放到缓存中。

  5. 是否单台机器没控制好线程数导致线程数过多
    解决方案:
    采用线程池来管理线程,并推荐使用MQ来取代多线程

为什么推荐用MQ,而不推荐使用多线程
  1. MQ具备削峰,而多线程不具备。因为多线程本质上还是在当前服务器创建线程,而如果线程创建过多,也会出现高延迟的状况,并且线程数多了,CPU来回进行上下文切换,也是非常耗时的
  2. 如果宕机了,MQ可以保存消息,待恢复后继续消费,而多线程一旦当即那就彻底没了,会出现数据不同步问题
  3. 多线程实际消耗的还是当前服务器资源,但MQ不会,MQ可以配置消费完一个后,再进行第二个消息的消费
  4. 如果是多节点,MQ可以均衡的分配给不通的服务器去消费,并且也可以根据不同服务器消费能力来分发。好的服务器能力强,处理快,拿的消息就多。而多线程在哪台机器创建,就在哪台执行,可能会出现任务倾斜的问题
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号