
# ELB压测方案
通过ELB您可以进行大规模的业务流量负载，ELB的性能和稳定性将决定业务是否可以正常运行。在使用ELB承接真实业务流量前，可以通过对ELB进行压测提前模拟极端业务场景，确保ELB在真实业务转发中高可用。
#### 压测方案架构
压测方案参考架构如[图1]。
图1压测方案架构   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002435076106.png "点击放大")
#### 压测方案
- **TCP/TLS压测指标**
  压测TCP/TLS监听器转发的业务时，通常有如[表1]中的3个关键指标可以参考，监控详情请参考[弹性负载均衡监控指标说明](https://support.huaweicloud.com/usermanual-elb/elb_ug_jk_0001.html)。
   表1TCP/TLS监听器压测参考指标说明 
  | 指标名称  | 压测建议                                            |
  |:---|:---|
  | 新建连接数 | 建议使用短连接业务进行压测，测试负载均衡与后端服务器对新建连接的处理能力。           |
  | 并发连接数 | 建议使用长连接业务进行压测，测试负载均衡与后端服务器对并发连接的处理能力。           |
  | 带宽    | 建议压测业务使用大包，测试负载均衡处理带宽的能力，以确保在实际应用中能够稳定高效地处理大流量。 |
     
  
- **HTTP/HTTPS压测指标**
  压测HTTP/HTTPS监听器转发的业务时，通常有如[表2]中的4个关键指标可以参考，监控详情请参考[弹性负载均衡监控指标说明](https://support.huaweicloud.com/usermanual-elb/elb_ug_jk_0001.html)。
   表2HTTP/HTTPS监听器压测参考指标说明 
  | 指标名称        | 压测建议                                            |
  |:---|:---|
  | 新建连接数       | 建议使用短连接业务进行压测，测试负载均衡与后端服务器对新建连接的处理能力。           |
  | 并发连接数       | 建议使用长连接业务进行压测，测试负载均衡与后端服务器对并发连接的处理能力。           |
  | 带宽          | 建议压测业务使用大包，测试负载均衡处理带宽的能力，以确保在实际应用中能够稳定高效地处理大流量。 |
  | 每秒查询速率（QPS） | 建议压测业务配置较大的请求速率，测试负载均衡与后端服务器处理请求的能力。            |
     
  
- **后端服务器组配置**
  - 推荐使用"云服务器"作为压测的后端服务器。使用"IP类型后端"的后端服务器存在部分约束，详情请参考[配置IP类型后端的约束与限制](https://support.huaweicloud.com/usermanual-elb/elb_ug_hd3_0004_03.html#section0)。
  
  - 不建议流量分配策略使用"源IP算法"和开启会话保持功能，因为该配置下单个客户端的并发连接会集中在1个后端服务器上，造成后端服务器负载压力不均。
   
 
#### 压测工具建议
建议您使用华为云性能测试（CodeArts PerfTest）服务进行压测，性能测试服务支持快速模拟大规模并发用户的业务高峰场景，可以支持报文内容和时序自定义、多事务组合的复杂场景测试，测试完成后会为您提供专业的测试报告。
#### 压测示例
本实践以压测HTTP监听器进行举例。
创建后端协议为HTTP的后端服务器组，并将两台ECS添加至后端服务器组中，业务端口均设置为80端口。
创建一个独享型ELB实例（网络型和应用型），添加HTTP监听器并设置转发至的后端服务器组。
两台ECS的基础配置如下[表3]。
 表3ECS基础配置 
|  vCPUs   |                 4vCPUs                  |
|---|---|
| **内存**   | 8GiB                                    |
| **操作系统** | Huawei Cloud EulerOS 2.0 标准版 64位(10GiB) |
   
**操作步骤**
1. 分别远程登录两台ECS，参考以下步骤安装HTTP服务。
   1. 安装Nginx。
      ```
      yum install -y nginx
      ```
      
   
   2. 初始化默认页面。
      ```
      echo "performance test" > /usr/share/nginx/html/index.html
      ```
      
   
   3. Nginx默认监听TCP 80端口，您可以根据压测需要修改/etc/nginx/nginx.conf来监听更多端口。
   
   4. 启动HTTP服务。
      ```
      systemctl start nginx
      ```
      
   
   5. 执行以下任一条命令，确认访问HTTP服务正常（默认为80端口）。
      ```
      curl -X GET http://localhost 或者 curl -X GET http://127.0.0.1:80
      ```
      
    
2. 在CodeArts服务中进行流量压测，具体操作请参考[性能测试使用流程](https://support.huaweicloud.com/usermanualnew-cpts/cpts_02_0001.html)。
 
#### 压测性能不佳常见问题
- **后端服务器存在CPU性能瓶颈**
  后端服务器的CPU性能存在瓶颈，会导致压测性能较低。
  解决方案：排查压测过程中所有后端服务器的CPU使用率，提高后端服务器的性能规格。
  
- **部署业务依赖的应用存在性能瓶颈**
  客户端请求经过负载均衡转发到后端服务器后，由于后端服务器的业务应用可能会依赖其他服务（例如，数据库、DNS等），而这些服务存的性能瓶颈也会导致压测性能低。
  解决方案：排查后端服务器部署的整个业务流程并消除每个环节的瓶颈点。
  
- **端口不足**
  客户端或者服务端端口资源不足可能会导致无法压测到较高的并发连接。
  解决方案：排查以下可能原因并采取对应的建议措施：
  - 主动关闭TCP连接一方的连接会进入TIME_WAIT状态，大量TIME_WAIT状态的连接会导致端口耗尽。 建议：
    1. 压测业务配置改为长连接，避免频繁新建和关闭连接。
    
    2. 设置sysctl -w net.ipv4.tcp_tw_reuse=1，允许TIME_WAIT连接复用。
    
    3. 客户端设置sysctl -w net.ipv4.ip_local_port_range="1024 65535"，扩大端口资源，缓解端口耗尽问题。
     
  
  - 压测使用的客户端和后端服务器数量有限，导致端口资源不足。 建议：增加客户端和后端服务器的数量。
    
   
 
