首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特快-网关-基本八月/红宝石表演问题

特快-网关-基本八月/红宝石表演问题
EN

Stack Overflow用户
提问于 2019-11-21 14:26:21
回答 1查看 496关注 0票数 1

我们开始使用快递网关作为一个简单的代理,进行一些重写和jwt验证(jwt来自Auth0)。那里没问题。

对于一些端点,我需要基本的-auth,所以我需要设置持久性。

我们使用Kubernetes在同一个云提供商上运行我们的应用程序和管理数据库。

我注意到端点使用basic-auth的响应时间很长。我开始运行一些基本的基准。以下是结果。

成果摘要

  1. 直接调用我的应用程序
    • 284个请求/秒

  1. 快递网关-只有代理的
    • 285请求/秒

  1. 快速网关-代理+日志
    • 270请求/秒

  1. 快速网关(托管Redis) -代理+日志+ Basic Auth
    • 7请求/秒

  1. 快速网关(Embedded Redis) -代理+日志+ Basic Auth
    • 7请求/秒

首先,我认为我管理的Redis性能很差(它应该位于同一个数据中心,有kubernetes集群),但是嵌入式Redis具有相同的性能。

我不需要巨大的性能,但我觉得基本的Auth / Redis实现有问题。

这是意料之中吗?我需要一个庞大的Redis数据库吗?我能做些什么来排除这个问题?

结果细节

共享

HTTP基准测试是用完成的。

快件-网关码头图片:快件-网关:1.16.x

快件-网关gateway.config.yml (编辑):

代码语言:javascript
复制
http:
  port: ${HTTP_PORT:-8080}
admin:
  port: ${ADMIN_PORT:-9876}
  host: ${ADMIN_HOSTNAME:-localhost}
apiEndpoints:
  app-api:
    - host: ${APP_HOST}
      paths:
        - '/some/path'
      methods: ["POST"]
      scopes: ["scope:write", "scope:read"]
serviceEndpoints:
  app-api:
    url: ${SERVICE_HOST_APP}
policies:
  - log
  - proxy
  - basic-auth
pipelines:
  app-api:
    apiEndpoints:
      - app-api
    policies:
      - log: 
        - action:
          message: "${req.method} ${req.originalUrl}"
      - basic-auth:
      - proxy:
        - action:
            changeOrigin: false
            serviceEndpoint: app-api

快件-网关资源:

代码语言:javascript
复制
resources:
  requests:
    memory: "512M"
    cpu: "500m"
  limits:
    memory: "1024M"
    cpu: "1000m"

App资源:

代码语言:javascript
复制
resources:
  requests:
    memory: "512M"
    cpu: "500m"
  limits:
    memory: "1024M"
    cpu: "1000m"

1.直接调用我的应用程序

指挥:

代码语言:javascript
复制
./hey_linux_amd64 -n 10000 -m POST -T "application/json" -d <body> <app url>

结果:

代码语言:javascript
复制
Summary:
  Total:    35.2033 secs
  Slowest:  0.6221 secs
  Fastest:  0.0335 secs
  Average:  0.1685 secs
  Requests/sec: 284.0639


Response time histogram:
  0.034 [1] |
  0.092 [2689]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.151 [1830]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.210 [1781]  |■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.269 [2197]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.328 [1271]  |■■■■■■■■■■■■■■■■■■■
  0.387 [130]   |■■
  0.446 [31]    |
  0.504 [37]    |■
  0.563 [22]    |
  0.622 [11]    |


Latency distribution:
  10% in 0.0435 secs
  25% in 0.0852 secs
  50% in 0.1643 secs
  75% in 0.2434 secs
  90% in 0.2834 secs
  95% in 0.3056 secs
  99% in 0.3944 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0007 secs, 0.0335 secs, 0.6221 secs
  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0316 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0083 secs
  resp wait:    0.1676 secs, 0.0334 secs, 0.6217 secs
  resp read:    0.0001 secs, 0.0000 secs, 0.0027 secs

Status code distribution:
  [200] 10000 responses

资源使用情况:

代码语言:javascript
复制
> kubectl top pods
NAME                                       CPU(cores)   MEMORY(bytes)   
app-6fb8b4787d-9qpf2                       920m         254Mi

2.快递网关-仅限代理

指挥:

代码语言:javascript
复制
./hey_linux_amd64 -m POST -T "application/json" -d <body> <express-gateway url>

结果:

代码语言:javascript
复制
Summary:
  Total:    35.0445 secs
  Slowest:  0.7521 secs
  Fastest:  0.0349 secs
  Average:  0.1672 secs
  Requests/sec: 285.3516


Response time histogram:
  0.035 [1] |
  0.107 [3145]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.178 [2298]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.250 [2286]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.322 [2046]  |■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.394 [153]   |■■
  0.465 [32]    |
  0.537 [25]    |
  0.609 [9] |
  0.680 [4] |
  0.752 [1] |


Latency distribution:
  10% in 0.0450 secs
  25% in 0.0865 secs
  50% in 0.1628 secs
  75% in 0.2436 secs
  90% in 0.2796 secs
  95% in 0.2989 secs
  99% in 0.3538 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0009 secs, 0.0349 secs, 0.7521 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0074 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0042 secs
  resp wait:    0.1662 secs, 0.0348 secs, 0.7520 secs
  resp read:    0.0001 secs, 0.0000 secs, 0.0028 secs

Status code distribution:
  [200] 10000 responses

资源使用情况:

代码语言:javascript
复制
> kubectl top pods
NAME                                       CPU(cores)   MEMORY(bytes)   
express-gateway-56699967d8-hnvzw           320m         50Mi
app-6fb8b4787d-9qpf2                       743m         252Mi

3.快递网关-代理+日志

指挥:

代码语言:javascript
复制
./hey_linux_amd64 -m POST -T "application/json" -d <body> <express-gateway url>

结果:

代码语言:javascript
复制
Summary:
  Total:    36.9277 secs
  Slowest:  0.6278 secs
  Fastest:  0.0356 secs
  Average:  0.1796 secs
  Requests/sec: 270.7991


Response time histogram:
  0.036 [1] |
  0.095 [1595]  |■■■■■■■■■■■■■■■■■■■■■■■■
  0.154 [2616]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.213 [2604]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.272 [1756]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.332 [996]   |■■■■■■■■■■■■■■■
  0.391 [301]   |■■■■■
  0.450 [71]    |■
  0.509 [22]    |
  0.569 [32]    |
  0.628 [6] |


Latency distribution:
  10% in 0.0734 secs
  25% in 0.1195 secs
  50% in 0.1709 secs
  75% in 0.2316 secs
  90% in 0.2932 secs
  95% in 0.3262 secs
  99% in 0.4061 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0007 secs, 0.0356 secs, 0.6278 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0038 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0053 secs
  resp wait:    0.1787 secs, 0.0355 secs, 0.6275 secs
  resp read:    0.0001 secs, 0.0000 secs, 0.0063 secs

Status code distribution:
  [200] 10000 responses

资源使用情况:

代码语言:javascript
复制
> kubectl top pods
NAME                                       CPU(cores)   MEMORY(bytes)   
express-gateway-56699967d8-hnvzw           760m         94Mi 
app-6fb8b4787d-9qpf2                       898m         253Mi

4.速递网关(托管Redis) -代理+日志+ Basic Auth

指挥:

代码语言:javascript
复制
./hey_linux_amd64 -m POST -H "Authorization: Basic ..." -T "application/json" -d <body> <express-gateway url>

结果:

代码语言:javascript
复制
Summary:
  Total:    1386.7479 secs
  Slowest:  11.4025 secs
  Fastest:  0.2489 secs
  Average:  6.9121 secs
  Requests/sec: 7.2111


Response time histogram:
  0.249 [1] |
  1.364 [15]    |
  2.480 [77]    |■
  3.595 [148]   |■
  4.710 [236]   |■■
  5.826 [493]   |■■■■
  6.941 [2836]  |■■■■■■■■■■■■■■■■■■■■■
  8.056 [5292]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  9.172 [595]   |■■■■
  10.287 [231]  |■■
  11.403 [76]   |■


Latency distribution:
  10% in 5.8535 secs
  25% in 6.8129 secs
  50% in 7.0067 secs
  75% in 7.1767 secs
  90% in 7.8473 secs
  95% in 8.5065 secs
  99% in 10.0107 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0008 secs, 0.2489 secs, 11.4025 secs
  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0252 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0072 secs
  resp wait:    6.9111 secs, 0.2488 secs, 11.4024 secs
  resp read:    0.0001 secs, 0.0000 secs, 0.0090 secs

Status code distribution:
  [200] 9990 responses
  [502] 10 responses

资源使用情况:

代码语言:javascript
复制
> kubectl top pods
NAME                                       CPU(cores)   MEMORY(bytes)   
express-gateway-56699967d8-hnvzw           966m         62Mi
app-6fb8b4787d-9qpf2                       20m          245Mi  

5.快速网关(Embedded Redis) -代理+日志+ Basic Auth

指挥:

代码语言:javascript
复制
./hey_linux_amd64 -m POST -H "Authorization: Basic ..." -T "application/json" -d <body> <express-gateway url>

结果:

代码语言:javascript
复制
Summary:
  Total:    1395.9956 secs
  Slowest:  11.2510 secs
  Fastest:  0.2258 secs
  Average:  6.9731 secs
  Requests/sec: 7.1633


Response time histogram:
  0.226 [1] |
  1.328 [3] |
  2.431 [13]    |
  3.533 [3] |
  4.636 [12]    |
  5.738 [145]   |■
  6.841 [2597]  |■■■■■■■■■■■■■■■
  7.943 [6804]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  9.046 [375]   |■■
  10.148 [29]   |
  11.251 [18]   |


Latency distribution:
  10% in 6.3767 secs
  25% in 6.8170 secs
  50% in 6.9824 secs
  75% in 7.1205 secs
  90% in 7.5867 secs
  95% in 7.8832 secs
  99% in 8.5095 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0007 secs, 0.2258 secs, 11.2510 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0093 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0053 secs
  resp wait:    6.9722 secs, 0.2255 secs, 11.2504 secs
  resp read:    0.0001 secs, 0.0000 secs, 0.0126 secs

Status code distribution:
  [200] 9993 responses
  [502] 7 responses

资源使用情况:

代码语言:javascript
复制
> kubectl top pods
NAME                                       CPU(cores)   MEMORY(bytes)  
express-gateway-56699967d8-hnvzw           651m         57Mi
app-6fb8b4787d-9qpf2                       2m           252Mi
EN

回答 1

Stack Overflow用户

发布于 2020-01-04 10:55:03

我已经复制了相同的设置,你已经张贴在这里尽可能多,我没有得到同样的糟糕的表现,你正在经历。

我在云中创建了一个Azure Redis缓存,并在我的机器上本地运行EG (MacBook Pro 2019年),结果如下:

代码语言:javascript
复制
Concurrency Level:      50
Time taken for tests:   3.425 seconds
Complete requests:      500
Failed requests:        0
Non-2xx responses:      500
Total transferred:      99500 bytes
HTML transferred:       6000 bytes
Requests per second:    145.99 [#/sec] (mean)
Time per request:       342.478 [ms] (mean)
Time per request:       6.850 [ms] (mean, across all concurrent requests)
Transfer rate:          28.37 [Kbytes/sec] received

我一直在使用相同的网关配置。我想说,在您的Kubernetes网络配置中发生了一些事情。

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

https://stackoverflow.com/questions/58977214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档