【问题标题】:dispatch.yaml in Google App Engine has increase the response timeGoogle App Engine 中的 dispatch.yaml 增加了响应时间
【发布时间】:2018-04-02 18:33:16
【问题描述】:

基于 100 个请求。
地区:南美洲-东1

在 xxx.appspot.com/api/v1/ping 执行 GET 时,平均响应时间为 +/- 50 毫秒。

Example: Load time: 83 ms

激活 dispach.yaml (gcloud app deploy dispatch.yaml) 并使用新 URL xxx.mydomain.com/api/v1/ping 执行请求时,平均响应时间为 750 毫秒。

Example Load time: 589 ms

dispatch.yaml

dispatch:
  - url: "*/api/*"
  service: my-service

我在服务器上使用 spring boot。关注 app.yaml

service: my-service
runtime: java
env: flex
threadsafe: true

runtime_config:  # Optional
  jdk: openjdk8


handlers:
- url: /api/*
  script: this field is required, but ignored

manual_scaling:
  instances: 1

resources:
  cpu: 2
  memory_gb: 2.3

如何提高响应时间?

我是否正确使用调度将我的请求与我的域相关联?

curl -w "@curl-format.txt" -o ./ -s http://my.domnai.com/

        time_namelookup:  0,253
           time_connect:  0,328
        time_appconnect:  0,000
       time_pretransfer:  0,328
          time_redirect:  0,000
     time_starttransfer:  1,713
                        ----------
             time_total:  1,714

curl -w "@curl-format.txt" -o ./ -s http://my-app.appspot.com/

        time_namelookup:  0,253
           time_connect:  0,277
        time_appconnect:  0,000
       time_pretransfer:  0,277
          time_redirect:  0,000
     time_starttransfer:  0,554
                        ----------
             time_total:  0,554

【问题讨论】:

  • 您能指定如何计算加载时间吗?您的加载时间可能 = DNS 查找时间 + 网络延迟。这两种情况的网络延迟相同,但 DNS 查找时间可能会有所不同。
  • 嗨,我使用 Jmeter 对我的服务器执行许多请求。您建议使用获取 dns 解析时间的工具?我在短时间内提出了很多请求,你还相信是 DNS 吗?
  • 不确定在 JMeter 中是如何处理的,但您可以尝试curl 命令来获取响应时间细分。这里给出了如何做 - blog.josephscott.org/2011/10/14/timing-details-with-curl
  • 我将在帖子中添加有关 curl 的更多详细信息
  • 使用自定义域与使用调度文件相当正交。如果您使用调度文件和appspot.com 域,您是否看到相同的延迟?

标签: google-app-engine spring-boot httprequest dispatch response-time


【解决方案1】:

使用自定义域与使用调度文件相当正交。

当 App Engine 收到请求时,它首先需要确定请求的目标是哪个应用程序。默认情况下,它只使用请求的域名,无论是appspot.com 还是自定义域。来自Requests and domains

App Engine 确定传入请求是针对您的 app 使用请求的域名。

在做出此决定时,它还会根据Routing via URL 中描述的规则确定应用程序中将请求发送到的特定服务版本。

与使用appspot.com 相比,使用自定义域的请求可能需要一些额外的处理(我对此不确定),这可以解释响应时间的增加。这可以通过测量来确认。但如果是这样,我认为你无能为力。

请注意,不需要调度文件来做出上述路由决策。即使您使用自定义域。事实上,Adding a custom domain for your application 中的任何地方都没有对调度文件的引用。但是,如果要更改这些决定,则需要使用调度文件。

调度文件还允许在做出路由决策时考虑请求路径(除了请求域名)。

使用调度文件会增加响应时间,因为必须将请求域和路径与调度文件中的每条规则进行顺序比较,直到找到匹配项。如果未找到匹配项,则请求将发送到配置为接收流量的应用程序的 default 服务版本。您可以通过将特定服务的规则更早地放在调度文件中来略微减少特定服务的处理时间,但这就是您所能做的。

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多