Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MOE压测性能上不去 #2340

Open
huanglu20124 opened this issue Aug 17, 2023 · 6 comments
Open

MOE压测性能上不去 #2340

huanglu20124 opened this issue Aug 17, 2023 · 6 comments

Comments

@huanglu20124
Copy link

huanglu20124 commented Aug 17, 2023

我这边想通过压测看下moe的性能提升,现在发现性能上不去,请问可能是什么原因呢?
压测场景如下:把moe作为入流量sidecar代理,测试链路为:压测平台->iptables入流量劫持->moe->java后端服务,压测使用6个并发,moe和后端服务的容器配置都为4C8G,moe使用的镜像是示例里用到的mosnio/envoy-go-extension:latest。在配置文件几乎都相同的情况下,我用官方的envoy镜像能压到1.1w的qps,平均耗时0.45ms;但用moe只能压到2900的qps,平均耗时1.92ms。性能差异有点大,请问是不是我的压测姿势不太对?

moe的配置文件如下:

node:
  id: mosn
  cluster: mosn

bootstrap_extensions:
  - name: envoy.bootstrap.dso
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.dso.v3.dso
      so_id: mosn
      so_path: "/usr/local/envoy-go-extension/libmosn.so"

static_resources:
  listeners:
    - name: virtualInbound
      use_original_dst: true
      address:
        socket_address:
          address: 0.0.0.0
          port_value: 15006
      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                http_filters:
                  - name: envoy.filters.http.golang
                    typed_config:
                      "@type": type.googleapis.com/envoy.extensions.filters.http.golang.v3.Config
                      so_id: mosn
                      plugin_name: xx
                      merge_policy: MERGE_VIRTUALHOST_ROUTER_FILTER
                      plugin_config:
                        "@type": type.googleapis.com/udpa.type.v1.TypedStruct
                        type_url: typexx
                        value:
                          filter_chain: mosn_filter
                  - name: envoy.filters.http.router
                    typed_config:
                      "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
                route_config:
                  name: local_route
                  validateClusters: false
                  virtual_hosts:
                    - name: local_service
                      domains: ["*"]
                      routes:
                        - match:
                            prefix: "/"
                          route:
                            # host_rewrite_literal: mosn.io
                            cluster: inbound_server
                            timeout: 0s

  clusters:
    - name: inbound_server
      type: ORIGINAL_DST
      lbPolicy: CLUSTER_PROVIDED
      upstreamBindConfig:
        sourceAddress:
          address: "127.0.0.1"
          portValue: 0

admin:
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 19900

envoy的配置文件如下:

static_resources:
  listeners:
    - name: virtualInbound
      use_original_dst: true
      address:
        socket_address:
          address: 0.0.0.0
          port_value: 15006
      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                http_filters:
                  - name: envoy.filters.http.router
                    typed_config:
                      "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
                route_config:
                  name: local_route
                  validateClusters: false
                  virtual_hosts:
                    - name: local_service
                      domains: ["*"]
                      routes:
                        - match:
                            prefix: "/"
                          route:
                            host_rewrite_literal: mosn.io
                            cluster: inbound_server
                            timeout: 0s

  clusters:
    - name: inbound_server
      type: ORIGINAL_DST
      lbPolicy: CLUSTER_PROVIDED
      upstreamBindConfig:
        sourceAddress:
          address: "127.0.0.1"
          portValue: 0

admin:
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 19900
@taoyuanyuan
Copy link
Contributor

https://mp.weixin.qq.com/s/CzBaNbg2KZfqhvfTawOkwg
我们最近也压了一个 76%。
你用envoy官方的镜像试试呢

@huanglu20124
Copy link
Author

huanglu20124 commented Aug 17, 2023

https://github.com/mosn/mosn/pull/2200/files#diff-538f522e29d45d5564541720b027a825db556a96eb79af82ccba90a08602fc07

我现在是基于这个PR开发的,把sentinel-go限流熔断的功能做成了envoy的七层插件,之前和 @doujiang24 大佬沟通过,现在的MOE不支持在envoy官方镜像上直接跑

@doujiang24
Copy link
Member

可以参考 #2200 ,把集成 mosn.io/envoy-go-extension 改为集成 github.com/envoyproxy/envoy
应该改动量不大的

然后就可以基于 Envoy 镜像来测试了呢

@huanglu20124
Copy link
Author

好的,我研究一下

@huanglu20124
Copy link
Author

huanglu20124 commented Aug 25, 2023

改造之后,我使用官方镜像envoyproxy/envoy:contrib-v1.27来压测moe,发现性能比mosn还差17%左右。感觉性能还是不符合预期

压测配置:

  • 业务容器资源:4c8g
  • sidecar容器资源:4c8g
  • 并发:6
场景 cpu(app) cpu(sidecar) tps 折算1c支持tps
mosn 2.76c 1.84c 8893 1933
moe 2c 2.76c 7637 1604

另外,相同6并发下,我们压测原生envoy和mosn,发现envoy吞吐和mosn差不多,CPU占用还更高。

@doujiang24
Copy link
Member

@huanglu20124 感谢反馈,确实看起来不太符合预期呢

  1. 可以把改造的内容,提个 PR,我们看看是否有不合适的地方呢
  2. 可以描述下压测的场景,比如部署环境,还有压测的请求,压测工具之类的

多谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants