首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简单的 HTTP 调用,为什么时延这么大?

由于工作原因,调用耗时的问题,对我来说,已经见怪不怪了,经常会帮业务解决内部 RPC 框架调用超时的相关问题,但是 HTTP 调用耗时第一次遇到。不过,排查问题的套路是一样的。...不过本地确实也是存在问题的,因为ping 时延是 26ms,后端 HTTP 服务逻辑简单,几乎不耗时,因此本地调用平均耗时应该在 26ms 左右,为什么是 55ms?...为什么加了 TCP_NODELAY ,时延就从 39.2ms 降低到 2.8ms? 为什么本地测试的平均时延是 55ms,而不是 ping 的时延 26ms? TCP 协议究竟是怎么发送数据包的?...但是本地复现时,为什么本地测试的平均时延是 55ms,而不是 ping 的时延 26ms?我们也来抓个包吧。...总结 本文是从一个简单的 HTTP 调用,时延比较大而引发的一次问题排查过程。过程中,首先由外而内的分析了相关问题,然后定位问题并验证解决方案。

1.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简单的 HTTP 调用,为什么时延这么大?

    由于工作原因,调用耗时的问题,对我来说,已经见怪不怪了,经常会帮业务解决内部 RPC 框架调用超时的相关问题,但是 HTTP 调用耗时第一次遇到。不过,排查问题的套路是一样的。...不过本地确实也是存在问题的,因为ping 时延是 26ms,后端 HTTP 服务逻辑简单,几乎不耗时,因此本地调用平均耗时应该在 26ms 左右,为什么是 55ms?...为什么加了 TCP_NODELAY ,时延就从 39.2ms 降低到 2.8ms? 为什么本地测试的平均时延是 55ms,而不是 ping 的时延 26ms? TCP 协议究竟是怎么发送数据包的?...但是本地复现时,为什么本地测试的平均时延是 55ms,而不是 ping 的时延 26ms?我们也来抓个包吧。...总结 本文是从一个简单的 HTTP 调用,时延比较大而引发的一次问题排查过程。过程中,首先由外而内的分析了相关问题,然后定位问题并验证解决方案。

    1.2K30

    调用wx.request接口时需要注意的几个问题

    现在项目已经完成,还是要陆陆续续总结一下的,总结的过程也是对知识梳理和清晰的过程!...2)对于接口调用http和https的问题 对于这一个问题,在之前来说,微信公共平台支持使用http测试项目,但是正式发布需要使用https的域名, 但是前几天看到了微信公众平台发的一则公告: 应该是要封杀...http方式调用了,公告链接:为保证数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用(时间2017年9月21日) 3)关于method以及data数据 微信小程序多地方都严格区分大小写,...所以要注意method的value需要为大写,request的默认的超时时间都是60s; 对于data数据,上次我们从接口中拿到的数据是json格式的,最终发送给服务器的数据是String类型,如果传入的...POST请求中不好使了,content-type 默认为 'application/json';  所以使用post请求时,将content-type设置为 application/x-www-form-urlencoded

    2.9K110

    Windows和Linux 导入java https调用接口时的受信任证书

    Administrator\Desktop\湖南\dzswj.cer -storepass changeit -keystore cacerts     注:-alias 证书别名        -file 要导入的证书目录位置...       -storepass jdk的默认密码        -keystore cacerts此处是jdk的证书存放文件,无需更改 3.上一步命令制定完会出现 是否信任此证书?...sxdzswj -file /www/dzswj.cer -storepass changeit -keystore cacerts 1.查看某个证书,注grep 后面的 sxdzswj 即为上面导入证书时的别名...keytool -list -keystore cacerts | grep sxdzswj 2.查看目前环境下的证书 keytool -list -keystore cacerts 3....删除某个已安装的证书 sxdjswj :即为上面导入证书时的别名 keytool -delete -alias sxdzswj -keystore cacerts

    1.8K10

    调用外部api时的数据一致性问题

    事务的一致性需要由原子性来保证,即对于一系列操作,要么全部成功,要么全部失败回滚,以上述例子而言,账户金额扣除发生异常时,之前的写操作就要全部回滚,恢复到执行前的状态,这个大部分数据库都提供支持,我们平时只需要借助...数据库事务与隔离级别 全面分析 Spring 的编程式事务管理及声明式事务管理 ThreadLocal与Spring 事务管理 然而,并不是每一步操作都可以借助数据库的事务机制保持数据一致性的,有时候我们常常要调用开放平台的...api接口,比如一些第三方的卖家管理软件有时候会帮助淘宝卖家进行一些自动上下架的操作,这些操作全部是通过定时调用淘宝开放给开发者的自动上下架api进行的,因为后续有新的待操作商品加入,所以调用会每隔几个小时进行一次...,调用返回正确结果后再修改本地数据库相关的状态,一个比较的直观的过程是这样: // 该方法开启事务 传播属性为REQUIRED public void shelveOperation(...后更新本地状态 } }else if(状态为失败){ // 访问api后更新本地状态 } } 在编写业务逻辑代码时,

    6K81

    创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法?

    static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象的时候父类会调用子类方法...但是:创建B对象父类会调用父类的方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存中。...如果,子类重写了父类的方法,子类的方法引用会指向子类的方法,否则子类的方法引用会指向父类的方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...当子类对象创建时,会先行调用父类的构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。 但是:由于java语言是静态多分派,动态单分派。...其结果是当编译的时候,父类构造方法调用的方法的参数已经强制转换为符合父类方法的参数了。 上边代码在编译前已经转换为下面这个样子的了。

    6.2K10

    EasyDSS接口调用查看录像时,显示“未指定设备录像”的疑问解决

    EasyDSS互联网视频云服务可供一站式的转码、点播、直播、时移回放服务,在视频直播上最多可分为十六屏进行实时直播,在视频点播上则有视频点播广场便于用户自由点播。...EasyDSS视频能力灵活开放,可帮助用户快速搭建拥有极致观看体验、安全可靠的视频直播点播应用。常见的应用场景如智慧课堂、在线教育、娱乐直播、虚拟直播等。...在此前的文章中我们也介绍过,为了便于用户二次开发与调用,我们的平台均提供了API接口,用户可以根据自己的需求,参考对应平台的文档即可调用相关接口(EasyDSS接口文档地址:http://demo.easydss.com...近期有用户在调用EasyDSS接口,通过http查看录像时,显示“未指定设备录像”。 出现这种情况一般来说,是用户没上传设备参数导致的,那么我们只需要在请求地址后加上 “?...随着视频直播领域的火热发展,视频直播点播平台EasyDSS稳定流畅的推拉流与直播、点播等功能,在行业领域中也得到广泛应用。

    55120

    Springboot mini - Solon详解(四)- Solon的事务传播机制

    因为这些都是暗的,看不见的,所以也容易产生一些疑惑: 场景一:classA 方法调用了 classB 方法,但两个方法都有事务 如果 classB 方法异常,是让 classB 方法提交,还是两个一起回滚...场景二:classA 方法调用了 classB 方法,但是只有 classA 方法加了事务 是否把 classB 也加入 classA 的事务,如果 classB 异常,是否回滚 classA?...场景三:classA 方法调用了 classB 方法,两者都有事务,classB 已经正常执行完,但 classA 异常 是否需要回滚 classB 的数据?...这个时候,传说中的事务传播机制和策略就派上用场了 二、传播机制生效条件 所有用 aop 实现的事务控制方案 ,都是针对于接口或类的。所以在同一个类中两个方法的调用,传播机制是不生效的。...三、传播机制的策略 下面的类型都是针对于被调用方法来说的,理解起来要想象成两个 class 方法的调用才可以。

    43630

    项目实战:第三方接口调用,超时失败时的重试方案

    在实际工作过程中,重试是一个经常使用的手段。...比如工程中使用http请求外部服务,可能因为网络异常出现超时而采取重试手段,查阅了N多资料,也未发现有成型的框架可以支持失败重试策略,幸运的是还是有成型的中间件中关注过此问题的。.../artifactId> 1.1.2.RELEASE 2、编写测试类,图中示例为X征信第三方查询接口 抛出RuntimeException...若5次重试后依旧失败,则默认调用带有注解@Recover的方法,给接口返回一个默认值。...运行结果如下 以上示例是最简单的用法,可以git clone源码深入了解下,相信失败发试的场景很多,特别是依赖第三方服务的场景。

    1.7K10

    使用 C# 中的 dynamic 关键字调用类型方法时可能遇到的各种问题

    你可以使用 dynamic 来定义一个变量或者字段,随后你可以像弱类型语言一样调用这个实例的各种方法,就像你一开始就知道这个类型的所有属性和方法一样。..."); object GetSomeInstance() { return 诡异的东西; } 我们的 GetSomeInstance 明明返回的是 object,我们却可以调用真实类中的方法...接下来讲述使用 dynamic 过程中可能会遇到的问题和解决方法。 编译错误:缺少编译器要求的成员 你初次在你的项目中引入 dynamic 关键字后,会出现编译错误,提示 “缺少编译器要求的成员”。...{0} 是类型名称,而 {1} 是使用 dynamic 访问的属性或者方法的名称。...”未包含“Key”的定义” 出现此异常的原因是: dynamic 所引用的对象里面,没有签名相同的 public 的属性或者方法 于是,如果你确认你的类型里面是有这个属性或者方法的话,那么就需要注意需要将此成员改成

    78130

    Angular2 返回时组件生命周期函数不被调用的解决方法

    这两天使用 Angular2 遇到的一个 @angular/router 的 bug: 症状 @angular/router 版本 3.0.0-beta.2 使用 safari 浏览器,iOS 的都可以...打开 Angular2 官方的范例项目 点击导航栏上的 Heroes 转到 Heroes 列表页面 后退回到 Dashboard 页面,正常情况下应该有的四个 Heroes 没有出现 桌面 safari...或 iOS 的都可以,使用 router 导航到一个新页面,然后后退,原页面 Component 的生命周期函数不会被调用,导致页面表现不正常。...解决方法 已经有人修复了:fix(router): back button does not work in IE11 and Safari 但至本文成文还没有更新到最新的 router npm 模块里...临时应急的话可以自行修改项目目录下的node_modules/@angular/router/src/router.js 的 282 和 284 行即可 this.locationSubscription

    1.8K40
    领券