【发布时间】:2021-01-31 12:59:21
【问题描述】:
我制作了一个依赖于最新消息的应用,其中一部分需要带来特定国家/地区的新闻,以便在网站上发布一些最新的新闻文章。我选择了 world.einnews.com,因为他们有非常好的特定国家/地区的布局,他们还提供 RSS,但是您必须在他们生成 rss 链接的网站上订阅每个国家/地区。 我走捷径,直接去他们的网站,阅读我需要的东西。几周前还好,现在我开始看到延迟收到该网站的回复,就在我决定上线之前。
下面是我的 okhttp 事件监听器日志,你可以看到 responseHeader 启动时总是出现延迟
0.000 callStart
0.001 connectionAcquired
0.001 requestHeadersStart
0.002 requestHeadersEnd
0.002 responseHeadersStart
86.383 responseHeadersEnd
86.799 responseBodyStart
87.817 responseBodyEnd
87.977 connectionReleased
87.998 callEnd
现在这就是我的情况,所以当尝试 SSL 握手时似乎发生了一些事情我尝试 curl 并得到了这个输出:
curl -G https://world.einnews.com/country/burkinafaso -v -e www.google.com -k
* About to connect() to world.einnews.com port 443 (#0)
* Trying 173.203.107.183...
* Connected to world.einnews.com (173.203.107.183) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* SSL connection using TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
* Server certificate:
* subject: CN=*.einnews.com
* start date: Feb 17 00:00:00 2020 GMT
* expire date: Mar 18 12:00:00 2021 GMT
* common name: *.einnews.com
* issuer: CN=Thawte RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US
> GET /country/burkinafaso HTTP/1.1
> User-Agent: curl/7.29.0
> Host: world.einnews.com
> Accept: */*
> Referer: www.google.com
>
< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 16 Oct 2020 19:09:54 GMT
< Content-Type: text/html
< Content-Length: 209078
< Connection: keep-alive
< Keep-Alive: timeout=10
< Vary: Accept-Encoding
< Vary: Accept-Encoding
< Status: 200 OK
< Content-Security-Policy-Report-Only: default-src https: data: 'unsafe-eval' 'unsafe-inline';
report-uri /csp_reports
< Expires: Thu, 15 Oct 2020 19:09:52 GMT
< Cache-Control: no-cache
< Set-Cookie: ein_visit=1602875392%3AjrJa9zNl7kWh1O4JiDEY894a2IJ-
eRnsMhow4fJAeHyPzerWcCrYBn7xgrN82ktxe90__N-BL73l4y4w_UJVj-ycYbubg-
Ew9wAin5pFxdycFXl9lwDEqb4KVYtlq_lEhCvW2JDWoIsV9SxNXVsWOsfrrbZSDL8rtyGjAmVnlPV1TI-
XovsUf722O06qIPqJcgtupdjxgHzptJ3t0sCtcBw39Vd2EkxTxVzxhNK0o-
< Set-Cookie: ein_ags=gLLGYrJqzY4BCiOT%3A1602875392%3A1602875392; domain=einnews.com; path=/;
expires=Sat, 17-Oct-2020 13:09:52 GMT
< Set-Cookie:
prev_nav_1=qZvmCmbfK7v3yxTY+1602875392+worldnews+%2Fcountry%2Fburkinafaso+Burkina+Faso+Newswire;
domain=einnews.com; path=/; expires=Sat, 17-Oct-2020 19:09:52 GMT
< X-Frame-Options: SAMEORIGIN
< Etag: "02c6c59d2763f21d92d95d686866a473"
< Set-Cookie: uid=AgAAAALwiV/RLE+xAYMFRw==; expires=Thu, 31-Dec-37 23:55:55 GMT; domain=.einnews.com;
path=/
<
即使 curl 也需要很长时间,我真的束手无策。我在拨打电话之前尝试信任所有 ssl,我还尝试使用不同的用户代理和其他参数,但我无法弄清楚为什么网站响应缓慢。
我只需要点击一次并将结果缓存一天,这样我就可以避免网络故障,最初还可以,但现在我有很长的延迟,但有时会更快。如果我通过浏览器正常访问该站点,站点速度很快,只有无头浏览是一种痛苦。
有什么提示和技巧可以加快这个速度吗?
【问题讨论】:
-
您在浏览器中的测量结果如何?您甚至可以在浏览器请求中用眼睛检测到 86 毫秒吗?听起来该站点只需要 86 毫秒即可生成响应。在大多数 HTTP Web 框架中,您需要先生成正文,然后才能设置响应(200,响应标头 + 正文)。
-
那不是毫秒那秒,请检查okhttp listener event
-
没有足够的信息来继续这个问题。没有重现该问题的示例代码。当您从单个服务器对它进行大量并发调用时,它可能只是一个过载的服务器。
标签: performance ssl web-crawler okhttp