记一次 PHP 应用 curl 耗时 namelookup_time 较长问题处理过程

技术分享  / 只看大图  / 倒序浏览   ©

#楼主# 2020-2-12

跳转到指定楼层

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
起因

日常检查接口可用性,发现有个接口耗时较长
排查过程


  • 确定耗时位置:根据日志根本确定“请求支付宝接口耗时”
  • 跟支付宝核实:将请求日志提工单给支付宝技术客服,后反馈“支付宝这边是正常不耗时的”
  • 怀疑是自己服务器问题:查找资料后知道可根据 curl_getinfo() 获取 curl 请求详细信息,从中确定问题与服务器DNS有关
// 代码$response = curl_exec($ch);$curlInfo = curl_getinfo($ch);// $curlInfo 信息如下{    "url": "https://openapi.alipay.com/gateway.do?app_id=2018...省略ing",    "content_type": "text\/html;charset=UTF-8",    "http_code": 200,    "header_size": 420,    "request_size": 821,    "filetime": -1,    "ssl_verify_result": 0,    "redirect_count": 0,    "total_time": 1.856358, # 总耗时    "namelookup_time": 1.51023, # 说明主要是解析DNS耗时较长    "connect_time": 1.544082,    "pretransfer_time": 1.657145,    "size_upload": 44,    "size_download": 477,    "speed_download": 477,    "speed_upload": 44,    "download_content_length": 477,    "upload_content_length": 44,    "starttransfer_time": 1.856326,    "redirect_time": 0,    "redirect_url": "",    "primary_ip": "110.75.231.202",    "certinfo": []}

  • 查找资料:多数案例说是 IPv6、IPv4 问题,接纳下面的方案尝试,但问题依然存在。说明我这里碰到的不是这个原因。
/*如果服务器开启了IPv6,curl 默认会优先解析IPv6,在对应域名没有IPv6的情况下,会等待IPv6 DNS解析失败 TIMEOUT 之后才按以前的正常流程去找IPv4,所以就会出现比较耗时的情况。*/curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); $response = curl_exec($ch);$curlInfo = curl_getinfo($ch);

  • 验证服务器DNS解析该域名是否正常(方法参考文末链接):发现有1台服务器异常

    024520htj2winq5hjnquq8.png

  • 修改服务器DNS验证(方法参考文末链接):修改后正常

    024521rzhikrlciic2o5yf.png

  • 查看业务日志:正常
然后

删除 curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
下班
相干资料:

PHP curl_setopt 文档:https://www.php.net/manual/en/function.curl-setopt.php
使用 curl 命令 查看 请求耗时情况:https://www.cnblogs.com/lnlvinso/p/9775484.html
Linux 查看和设置DNS:https://jingyan.baidu.com/article/c275f6ba4775a9e33d756785.html
分享淘帖
回复

使用道具

您的回复是对作者最大的奖励

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于作者

碧雲居士

新手猿

  • 主题

    5

  • 帖子

    5

  • 关注者

    0

Archiver|手机版|小黑屋|云大陆 | 赣ICP备18008958号-4|网站地图
Powered by vrarz.com!  © 2019-2020版权所有云大陆