首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用请求的响应时间非常长

使用请求的响应时间非常长
EN

Stack Overflow用户
提问于 2019-07-07 00:07:18
回答 1查看 1.1K关注 0票数 3

描述

我有一个运行Python应用程序的AWS ec2实例(Ubuntu16)。在其中,我调用了一些Facebook帐户工具包API,以及Google。在我两周前重新启动实例之前,它们都非常正常。

重新启动后,请求需要超过5分钟才能完成,这是完全不能接受的。为了让请求完成,我必须手动将超时设置为10分钟以上。

这个问题只发生在我的一台服务器上,我在另一台服务器上运行相同的环境,在不到1秒的响应时间内运行非常好。

临时修正

为了暂时解决这个问题,我使用代理服务器来完成请求。

  1. API服务器(有超时问题的服务器)
  2. 代理服务器运行python脚本并返回结果。
  3. API (带有超时问题的服务器)向客户端返回响应

Situations

  1. 我尝试在API服务器上使用curl,它的响应时间也小于1秒。
  2. 我使用requests尝试了python环境,响应时间非常糟糕,超过5分钟。
    1. 如果设置头{'Connection' : 'keep-alive' },则第二个请求将是正常的。
    2. 我打开了日志记录,似乎在建立到目的地的连接时请求被卡住了。

  1. 我尝试使用我编写的API,响应时间也很糟糕,超过5分钟。

电流码

响应时间慢的请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
url_get_access_token = "https://graph.accountkit.com/v1.3/access_token?grant_type=authorization_code&code=%s&access_token=AA|%s|%s"
url_get_access_token = url_get_access_token % (token, self.facebook_app_id, self.facebook_account_kit_scert)
response = requests.get(url_get_access_token)
body = response.json()

上面提到的代理服务器是同一子网中的另一个实例,但我使用DNS服务器进行调用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response = requests.get("https://proxyserver.com/somepath", params={})

因为它只影响其中一个服务器,这是DNS问题还是AWS配置?帮帮忙,谢谢。

更新

由于时间卷曲的结果,使用iPv6调用似乎需要更多的时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ time curl -4 -s https://graph.accountkit.com/v1.3
$ time curl -6 -s https://graph.accountkit.com/v1.3

iPv4

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
real    0m0.665s
user    0m0.068s
sys 0m0.020s

iPv6

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
real    2m7.180s
user    0m0.008s
sys 0m0.000s
EN

回答 1

Stack Overflow用户

发布于 2019-07-07 12:58:06

想到了两件事。

DNS

调试时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat /etc/resolv.conf

$ time dig aaaa graph.accountkit.com

您可能列出了多个名称服务器,而且并不是所有的名称服务器都是响应的,因此您需要进行长时间查找,因为它会超时于死的名称服务器。

TCP

调试时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ time curl -4 -s https://graph.accountkit.com/v1.3
$ time curl -6 -s https://graph.accountkit.com/v1.3

它会说“无效的OAuth 2.0访问令牌”,是的,是的,很好。我们感兴趣的是连接、发送GET和检索web文档所需的时间。

此域提供A和AAAA地址。如果IPv6传输已经结束,那么requests.get()可能需要一段时间才能将故障转移到IPv4。

编辑

有人把你的IPv6运输机弄坏了。这在现代互联网上是不可接受的。丢包超时很可能导致127秒的时间过去.像traceroute6ping6这样的工具可以帮助您或网络专业人员诊断损失在哪里。可能ACL太紧了,正在丢弃它不该丢弃的IPv6数据包。丢弃ICMP将是特别糟糕的。要使TCP正确工作,必须传递ICMP。

tcpdump (或Wireshark)数据包跟踪将有助于准确地识别出向南移动的信息。你有可能患上了PMTUD黑孔。看看这是否显示任何“数据包太大”ICMP报告:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo tcpdump -tvvvni eth0 icmp6 and ip6[40+0]==2 

只要看一看出站端口443的时间,TCP重传就能解释为什么事情会在两分钟内失败,然后比特就会突然开始流动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56920375

复制
相关文章
如何使用cURL获得请求和响应时间?
hello,老伙计们,又有半个多月没见了,今天给大家分享一个干货编程小技巧,上至架构师、下至开发者、运维男、QA, 得此利器,事半功倍。
有态度的马甲
2021/12/15
4.8K0
计算每个请求的平均响应时间
目的 找出是哪些请求长期影响了系统性能 方法 web服务器的日志会记录每个请求的响应时间,分析访问日志,对相同请求的响应时间进行累加,响应时间的和 除以 这个请求的访问次数,就得到此请求的平均访问时间
dys
2018/04/03
3.1K0
计算每个请求的平均响应时间
使用 Nock 来模拟 http 请求响应
nock 是前端常用来模拟http请求响应的工具,它基于nodejs的原生http模块,并且他可以让我们写一些轻逻辑的代码,我们先看一个简单的例子:
IMWeb前端团队
2019/12/03
2K0
小站点响应时间长可能是因为带宽不足
之前网站打开的响应时间至少是5-6秒。也参考过很多网上的优化文章,但始终没法把这个时间降下来。
sean.liu
2022/09/07
4931
使用AOP打印日志Controller和DubboService的请求参数和相应参数和响应时间
前言:项目为了方便排查问题都会在请求的接口或者暴露的服务前后都会打上日志。这样就搬出了Spring核心功能AOP,前两天我问一年工作经验的javaer,AOP是干啥用的,他回答面向切面编程,打印日志用的。 其实AOP不仅仅为了只是为了打印日志,在声明式事务注解和缓存注解和锁注解和异步注解或者任务调度注解都是动态代理对象执行的,对于动态代理和静态代理或者没有接口使用cglib的实现原理抽空再写一篇。但是今天我们就用AOP来实现拦截所有Controller和DubboService打印日志,因为springmvc的拦截器不能拿到postBody的值。
王念博客
2019/07/25
2K0
Django的请求与响应
request.META: 请求中的元数据(消息头) request.META['REMOTE_ADDR']可以请求到客户端地址,当然你可以请求META中的任何信息.
Yuou
2022/09/26
6150
如何快速获取抓包文件中HTTP请求的响应时间
在日常的工作中经常会会遇到一些请求性能问题,原因可发生在请求的每一个环节:客户端,网络,服务端,这里我们通常需要通过抓包来定位问题出在哪个环节。本文简单介绍一个小技巧,可以快速列出所有HTTP请求的header用时,进而找到耗时异常的请求,再进一步分析问题原因。
苏东
2020/07/08
11.8K0
如何快速获取抓包文件中HTTP请求的响应时间
使用httpstat测试网站响应时间
httpstat是用Python写的脚本,可以用来测试http服务器的回应速度。 httpstat本质上就是封装了cURL工具,所以它可以接受各种 cURL的选项。(-w、-D、-o、-s与-S除外,因为这些已经被 httpstat使用了)
Python疯子
2018/09/06
1.5K0
使用httpstat测试网站响应时间
使用 cURL 测量网站响应时间
内容整理自:https://blog.cloudflare.com/a-question-of-timing/,其中还有 chrome 的测量方式,有兴趣的朋友可以看一下。
dys
2018/11/30
2K0
使用 cURL 测量网站响应时间
如何使用Java处理HTTP请求和响应?
Java中有许多成熟的HTTP框架可以使用,例如Spring、Netty等。这些框架提供了各种HTTP处理器和工具类,使得HTTP请求和响应处理变得更加容易和高效。下面是一个简单的Java代码示例,演示如何使用Java处理HTTP请求和响应:
用户1289394
2023/08/22
6580
如何使用Java处理HTTP请求和响应?
无请求不响应?
前几天我们学习了HttpServletResponse,今天就让我们了解一下HttpServletRequest。和HttpServletResponse一样,在service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大。
阿Q说代码
2021/05/13
1.2K0
无请求不响应?
Servlet请求和响应
在Java Web中Servlet、请求和响应是最基本的三个对象,在Web容器的管理下,这三者能够完成基本的HTTP请求处理。
阿杜
2018/08/06
9440
Servlet请求和响应
谈谈HTTP的请求和响应
HTTP是HyperText Transfer Protocol的缩写,意思是超文本传输协议。它是一种应用层协议,允许基于WEB的应用程序进行通信和交换数据。
Jimmy_is_jimmy
2019/07/31
1.2K0
HTTP -- 请求/响应 结构
  2.Content- Type:表示属于什么类型文档。一般默认是 text/plain.通常指定为 text/html
小蔚
2019/09/11
3.4K0
http请求响应canceled
最后替换了mp4文件,发现是html video标签对mp4文件格式支持的问题,可能是内部异常,导致出现了http canceled错误,查阅很多网上的解释,基本上都是和异步操作有关
sofu456
2021/03/03
1.6K0
Http请求与响应
Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定。 请求部分由三部分组成: Requset line:请求行,位于第一行 Request headers:请求消息头,从第二行开始至第一个空行结束 Request body:请求正文,从第一个空行之后的都是正文 响应部分也由三部分组成: Response line:响应行,位于第一行 Response headers:响应消息头,从第二行开始至第一个空行结束 Response body:响应正文,
欠扁的小篮子
2018/04/11
9820
Java生成Soap请求响应实体,Java 生成wsdl请求响应实体
Soap技术过于陈旧,2023还能遇见,真是日了狗了。手动创建XML实体不知何年何月可以创建完成,工欲善其事必先利其器,上插件。
高久峰
2023/10/12
3770
使用fiddler断点修改某个接口的 请求参数与返回参数,拦击请求,修改请求与响应
有一个接口 https://blog.csdn.net/phoenix/web/blog/pay-column-rank?page=1&pageSize=20 排行榜分页获取接口,默认每页20条数
拿我格子衫来
2023/08/24
7040
使用fiddler断点修改某个接口的 请求参数与返回参数,拦击请求,修改请求与响应
如何测量并报告ASP.NET Core Web API请求的响应时间
大家都知道性能是API的流行语。而相应时间则是API性能的一个重要并且可测量的参数。在本文中,我们将了解如何使用代码来测量API的响应时间,然后将响应时间数据返回到客户端。
依乐祝
2018/09/18
2K0
如何测量并报告ASP.NET Core Web API请求的响应时间
点击加载更多

相似问题

Marklogic :查询响应时间非常长

31

请求时间非常长的VS2010

20

移动设备的服务请求时间非常长

18

新的Wordpress安装响应等待时间非常长

46

使用ActiveMQ重发非常长的时间

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文