开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

测试性能

本文档基于“Docker+Bond4+IPVLAN”的组网环境进行网络性能优化验证。

以同时对4个redis-server实例进行redis-benchmark压力测试为例,验证特性是否成功使能,以及获取特性使能后的性能测试结果。本章节包含亲和性配置、性能测试两部分。请根据容器场景、物理机场景选择相应的步骤执行亲和性配置。

亲和性配置(容器场景)

  1. 在Server端环境分别进入4个Docker容器。
    1
    docker exec -it {容器名} bash 
    
  2. 每个Docker容器上启动一个redis-server实例,共启动4个redis-server实例。
    1
    2
    cd path/redis-6.0.20 
    ./src/redis-server ./redis.conf --bind 0.0.0.0 --port 6379 
    
  3. 请参见性能测试执行测试。

亲和性配置(物理机场景)

  1. 每个Docker容器上启动一个redis-server实例,共启动4个redis-server实例。
    1
    2
    cd path/redis-6.0.20
    cgexec -g cpu:$dirname ./src/redis-server ./redis.conf --bind 0.0.0.0 --port 6379
    
  2. 请参见性能测试执行测试。

性能测试

  1. 在Redis进程启动后,执行以下命令查看网卡是否成功启用网络多路径特性。
    1
    2
    ethtool -u eth1
    ethtool -u eth2
    

    上述eth1和eth2是启用网络多路径特性配置网卡的设备名称。如果存在配置规则,如下图所示,则代表网络多路径特性已启用;否则未启用。

  2. 在Client端环境进入Redis目录,准备压力测试脚本,可参考以下脚本内容并按实际情况修改相应参数。

    以下参数请按实际情况进行修改:

    • REDIS_PATH为Redis所在根目录。
    • REDIS_SERVER_IP_PREFIX为IP网段。
    • redis_server_ip_suffix为起始IP后缀。
    • instances=4。
    • client为-c参数,设为最优并发数。
    • size为-d参数,默认3字节,也可改为256字节或其他。
    #!/bin/bash 
     
    REDIS_PATH="xxx1" # redis所在目录
    REDIS_PORT=6379 
    REDIS_SERVER_IP_PREFIX="192.168.xx" 
    redis_server_ip_suffix=128 # Server端起始IP后缀 
    instances=4 # 实例数 
    client=200 #-c参数 
    size=3  # -d参数,默认3 
     
    # 关闭redis-benchmark进程,清空测试数据日志 
    pkill redis-benchmark 
    DATA_LOG="xxx2" # 性能数据结果存放的目录
    mkdir -p $DATA_LOG 
    rm -rf ${DATA_LOG}/* 
     
    # 在Client端进行redis-benchmark压力测试 
    job_ids="" 
    for (( instance=1; instance<=instances; instance++ )); do 
        REDIS_SERVER_IP="${REDIS_SERVER_IP_PREFIX}.${redis_server_ip_suffix}" 
        echo "Running redis-benchmark on ${REDIS_SERVER_IP}:$REDIS_PORT" 
        echo "${REDIS_PATH}/src/redis-benchmark -h ${REDIS_SERVER_IP} -p $REDIS_PORT" 
        ${REDIS_PATH}/src/redis-benchmark -h ${REDIS_SERVER_IP} -p $REDIS_PORT -c $client -d $size -n 10000000 -r 10000000 -t set,get --threads 20 -q >> ${DATA_LOG}/${instances}_c${client}_d${size}_${REDIS_SERVER_IP}_${REDIS_PORT}.log & 
        job_ids="$job_ids $!" 
        ((redis_server_ip_suffix++)) 
    done 
     
    # 等待 redis-benchmark 执行完毕 
    echo "Waiting for the $instances jobs: SET, GET" 
    wait $job_ids
  3. 执行压力测试脚本同时对4个实例进行redis-benchmark压力测试。

    性能结果会记录在规定路径DATA_LOG下,用cat ./*命令查看,取四个实例的平均值为四实例性能。