高并发访问RGW时测试失败的解决方法

问题现象描述

一个RGW(RADOS Gateway)的访问并发数大于512时,COSBench测试异常终止。

关键过程、根本原因分析

RGW默认线程数为512,当并发数高于512时,RGW无法处理客户端请求,所有测试失败。

结论、解决方案及效果

  1. 查看COSBench log。

    vim /path/to/cosbench/archive/workload/workload.log
    发现以下错误信息:
    HTTP Request Time Out

  2. 查看RGW log。

    vim /var/log/ceph/<rgw>.log

    发现以下错误信息:

    iterate_obj() failed with -5

  3. 查看RGW默认线程数。

    radosgw-admin --show-config | grep thread

    参数rgw_thread_pool_size,即RGW默认线程数为512,当并发数高于512时,RGW无法处理客户端请求,所有测试失败。

  4. 增加RGW线程,在任意一个Ceph节点上执行如下命令。

    sed -i 's/rgw_frontends.*/& num_threads=1024/g' ceph.conf

  5. 重启COSBench进程。

    systemctl restart ceph-radosgw.target