高并发访问RGW时测试失败的解决方法
问题现象描述
一个RGW(RADOS Gateway)的访问并发数大于512时,COSBench测试异常终止。
关键过程、根本原因分析
RGW默认线程数为512,当并发数高于512时,RGW无法处理客户端请求,所有测试失败。
结论、解决方案及效果
- 查看COSBench log。
vim /path/to/cosbench/archive/workload/workload.log
发现以下错误信息:HTTP Request Time Out
- 查看RGW log。
vim /var/log/ceph/<rgw>.log
发现以下错误信息:
iterate_obj() failed with -5
- 查看RGW默认线程数。
radosgw-admin --show-config | grep thread
参数rgw_thread_pool_size,即RGW默认线程数为512,当并发数高于512时,RGW无法处理客户端请求,所有测试失败。
- 增加RGW线程,在任意一个Ceph节点上执行如下命令。
sed -i 's/rgw_frontends.*/& num_threads=1024/g' ceph.conf
- 重启COSBench进程。
systemctl restart ceph-radosgw.target