ambassador envoy単純性能テスト


wrk
簡単で高性能なテストツールです.以前はabを使用していましたが、envoyのデフォルトではhttp 1.0はサポートされていませんが、abは現在http 1.0しかサポートされていないので、完璧にずれています.Envoyはhttp 1.0をサポートできますが、私は構成しましたが、成功していないようで、深く入り込んでいないので、思い切ってwrkを変えて、今のところこのツールが使いやすいと感じています.
wkrの一般的なスレッド数は多すぎるべきではなく、コア数の2~4倍で十分であり、多すぎると逆にスレッドの切り替えが多すぎるため効率が低下する.wrkは1つのスレッドを接続するモデルではなく、非同期ネットワークioを通じて同時量を向上させるためである.したがって、ネットワーク通信はスレッドの実行をブロックしない.これもwrkが少ないスレッドで大量のネットワーク接続をシミュレートできる理由である.現在、多くの性能ツールはこのような方式ではなく、スレッド数を高めて高同時を実現しているため、同時量が高く設定されると、試験機自体の圧力が大きくなり、試験効果はかえって低下している.
インストールリファレンス
refer:
https://www.cnblogs.com/xinzh...
コマンドライン:
wrk -t100 -c10000 -d60s --timeout 60s
http://ambassador.default.svc... :80/http-echo/
[root@master01 ambassador]# wrk
Usage: wrk                              
  Options:                                            
    -c, --connections   Connections to keep open   
    -d, --duration      Duration of test           
    -t, --threads       Number of threads to use   
                                                      
    -s, --script        Load Lua script file       
    -H, --header        Add header to request      
        --latency          Print latency statistics   
        --timeout       Socket/request timeout     
    -v, --version          Print version details      
                                                      
  Numeric arguments may include a SI unit (1k, 1M, 1G)
  Time arguments may include a time unit (2s, 2m, 2h)

http sever
バックグラウンドサービスはgo書き込みhttp server、参考:https://github.com/hashicorp/...
deployment.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: http-echo
  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v0
      kind:  Mapping
      name:  httpecho_mapping
      prefix: /http-echo/
      service: http-echo
spec:
  selector:
    app: http-echo
  ports:
  - port: 80
    name: http-echo
    targetPort: 5678
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: http-echo
spec:
  replicas: 6
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: http-echo
    spec:
      containers:
      - name: http-echo
        image: hashicorp/http-echo
        args: ["-text=\"hello world\""]
        ports:
        - name: httpa
          containerPort: 5678
        resources:
          limits:
            cpu: "1"
            memory: 512Mi

ambassador
install deploy
テストデータ
環境
component
version
docker
1.13.1
k8s
1.15.2
ambassador
0.83.0
envoy
1.12.0
しげん
component
replica
resource
http-echo
3コピー
1C1G
ambassador
10コピー
2C0.5G
テストデータ
service
wrk -t100 -c10000 -d60s --timeout 60s
http://http-echo.default.svc.... :80
ambassador
wrk -t100 -c1000 -d60s --timeout 60s
http://ambassador.default.svc... :80/http-echo/
couclusion
method
concurrency
time
rqs
transfer/sec
latency avg
latency max
latency std
service
1000
1st
53709.17
9.01MB
31.36ms
689.04ms
80.48%
service
1000
2nd
53452.36
8.97MB
31.55ms
497.89ms
80.89%
service
10000
1st
59413.33
9.97MB
225.50ms
6.90s
91.98%
service
10000
2nd
59920.76
10.06MB
223.60ms
8.71s
92.36%
ambassador
1000
1st
30484.25
6.55MB
38.44ms
367.21ms
68.18%
ambassador
1000
2nd
30688.21
6.59MB
38.30ms
304.27ms
67.30%
ambassador
10000
1st
30512.20
6.59MB
335.20ms
4.24s
70.35%
ambassador
10000
2nd
30977.12
6.69MB
336.08ms
3.69s
71.70%