tencent cloud

文档反馈

使用连接池限制并发

最后更新时间:2023-12-26 11:35:22

    操作场景

    随着电商网站业务规模的增大,对网站的访问请求并发量开始增加,网站业务人员计划限制服务最大并发数,保证服务运行健壮性。

    操作步骤

    为模拟“高并发”请求场景,首先通过提交以下 YAML 部署 client 服务(10 pods),模拟对 user 服务的高并发请求。
    apiVersion: v1
    kind: Namespace
    metadata:
    name: test
    labels:
    istio-injection: enabled
    spec:
    finalizers:
    - kubernetes
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: client
    namespace: test
    labels:
    app: client
    spec:
    replicas: 10
    selector:
    matchLabels:
    app: client
    template:
    metadata:
    labels:
    app: client
    spec:
    containers:
    - name: client
    image: ccr.ccs.tencentyun.com/zhulei/testclient:v1
    imagePullPolicy: Always
    env:
    - name: POD_NAME
    valueFrom:
    fieldRef:
    fieldPath: metadata.name
    - name: REGION
    value: "guangzhou-zoneA"
    ports:
    - containerPort: 7000
    protocol: TCP
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
    name: client
    namespace: test
    labels:
    app: client
    spec:
    ports:
    - name: http
    port: 7000
    protocol: TCP
    selector:
    app: client
    type: ClusterIP
    此时对于访问 user 服务没有最大并发数限制,所有请求均可访问成功。通过 TKE 控制台 client deployment 查看 client pod 日志,所有的请求均返回了用户名 Kevin,证明访问请求成功。 高并发请求如下图所示:
    高并发请求
    
    
    所有请求均可访问成功如下图所示:
    
    
    通过配置 user 服务的 Destination Rule 限制最大并发数为 1:
    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
    name: user
    namespace: base
    spec:
    host: user
    trafficPolicy:
    connectionPool:
    http:
    http1MaxPendingRequests: 1
    http2MaxRequests: 1
    maxRequestsPerConnection: 1
    exportTo:
    - '*'
    此时查看 client pod 日志,部分请求开始出现异常,未返回用户名,请求失败,连接池起到了限制访问服务最大并发数的作用。 部分请求访问失败如下图所示:
    
    连接池测试完成后,在 user 服务的详情页面删除连接池相关流量策略配置。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持