Google App Engine中的dispatch.yaml增加了响应时间

时间:2018-04-02 18:33:17

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

基于100个请求 地区:southamerica-east1

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

Example: Load time: 83 ms

激活dispach.yaml(gcloud app deploy dispatch.yaml)并使用新网址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

1 个答案:

答案 0 :(得分:1)

使用自定义域与使用调度文件非常正交。

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

  

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

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

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

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

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

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