文档章节

源码解读如何提高RGW最大并发数

秦牧羊
 秦牧羊
发布于 2017/06/22 16:56
字数 303
阅读 144
收藏 0

源码解读如何提高RGW最大并发数

以rgw服务的main()为入口,查看整个fastcgi的初始化过程,代码如下

#src/rgw/rgw_main.cc
int main(int argc, const char **argv)
    if (framework == "fastcgi" || framework == "fcgi") {
      RGWProcessEnv fcgi_pe = { store, &rest, olog, 0 };

      fe = new RGWFCGXFrontend(fcgi_pe, config);
      
    dout(0) << "starting handler: " << fiter->first << dendl;
    int r = fe->init(); #调用RGWFCGXFrontend的init()方法

再看init()方法构建了一个RGWFCGXProcess,并将rgw_thread_pool_size作为实参传递进去。

#src/rgw/rgw_frontend.h
class RGWFCGXFrontend : public RGWProcessFrontend {
public:
  RGWFCGXFrontend(RGWProcessEnv& pe, RGWFrontendConfig* _conf)
    : RGWProcessFrontend(pe, _conf) {}

  int init() {
    pprocess = new RGWFCGXProcess(g_ceph_context, &env,
				  g_conf->rgw_thread_pool_size, conf);
    return 0;
  }
}; 

默认rgw_thread_pool_size为100,代码定义如下

#src/common/config_opts.h
OPTION(rgw_thread_pool_size, OPT_INT, 100) 

通过RGWFCGXProcess的构造函数发现max_connections=num_threads + (num_threads >> 3),也就是说默认情况下max_connections=100+1=101,代码注释中也提到这是为了确保能够尽可能多的处理请求。

#src/rgw/rgw_process.h
class RGWFCGXProcess : public RGWProcess {
	int max_connections;
public:

  /* have a bit more connections than threads so that requests are
   * still accepted even if we're still processing older requests */
  RGWFCGXProcess(CephContext* cct, RGWProcessEnv* pe, int num_threads,
		 RGWFrontendConfig* _conf)
    : RGWProcess(cct, pe, num_threads, _conf),
      max_connections(num_threads + (num_threads >> 3))
    {}

  void run();
  void handle_request(RGWRequest* req);
};

所以num_threads控制着max_connections的数量,如果你想提高单个rgw进程的最大并发数量,需要调高rgw_thread_pool_size。

© 著作权归作者所有

共有 人打赏支持
秦牧羊
粉丝 74
博文 57
码字总数 28980
作品 0
广州
架构师
私信 提问
加载中

评论(4)

秦牧羊
秦牧羊

引用来自“dengxiafub”的评论

引用来自“秦牧羊”的评论

引用来自“dengxiafub”的评论

max_connections=num_threads + (num_threads >> 3),其中,num_threads=100,那么(num_threads >> 3 = 12 ?

回复@dengxiafub : 位移运算
@秦牧羊 那么max_connections的结果应该是max_connections=100+12=112 ?

回复@dengxiafub : y
dengxiafub
dengxiafub

引用来自“秦牧羊”的评论

引用来自“dengxiafub”的评论

max_connections=num_threads + (num_threads >> 3),其中,num_threads=100,那么(num_threads >> 3 = 12 ?

回复@dengxiafub : 位移运算
@秦牧羊 那么max_connections的结果应该是max_connections=100+12=112 ?
秦牧羊
秦牧羊

引用来自“dengxiafub”的评论

max_connections=num_threads + (num_threads >> 3),其中,num_threads=100,那么(num_threads >> 3 = 12 ?

回复@dengxiafub : 位移运算
dengxiafub
dengxiafub
max_connections=num_threads + (num_threads >> 3),其中,num_threads=100,那么(num_threads >> 3 = 12 ?
单机部署多CEPH-RGW的方法

引言 在高配置服务器,单个RGW的并发量无法充分使用机器的网络带宽资源,本文用于说明如何在单机上部署多RGW的方法。 如何使nginx和radosgw联合使用 如何使用配置多nginx,多radosgw 1.nginx...

西昆仑
2016/02/04
875
0
Tomcat是如何处理多个请求的

我们以排队买票为例子,说说三种方案: 1、火车站只提供一个窗口,所有的人都必须排队等待。大家都知道这是多么糟糕的体验,后来的人必须等前面的人买完票才能进入申请购票,更糟糕的是中间还...

为了美好的明天
2018/11/15
0
0
福利丨用这两本好书,承包你的整个元旦小长假!

俗话说得好,圣诞都过了,元旦还会远吗? 在这小长假来临之际,小编为大家带来新一期@图灵教育 出版的好书推荐:《Docker:容器与容器云(第2版)》与《Go并发编程实战》。 当然,按照往期惯...

DBAplus社群
2016/12/30
0
0
ConcurrentHashMap源码分析

前言 JDK中的Hashtable是一个线程安全的K-V形式的容器,它实现线程安全的原理十分简单,就是在所有涉及对该哈希表操作的方法上都加上了synchronized关键字,进行加锁操作。这么做实现了线程安...

Justlearn
2017/04/13
0
0
tomcat最大连接数修改

1 tomcat 的server.xml的路径vim /usr/local/tomcat/conf/server.xml 1.1 最大连接数相关 maxThreads:表示最多同时处理的连接(以上是50个)minSpareThreads:表示没有没有使用也开这么多空...

zjycff
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

脚本配置java开发环境

@echo off&setlocal enabledelayedexpansion cls @echo "This script is used to registe envionment variables......" @echo. @echo. @echo. set var=%~dp0 set var=%var:~,-1% @echo "regi......

默克鱼
30分钟前
1
0
c++中友元函数理解与使用

在学习c++这一块,关于友元函数和友元类,感觉还是不好理解,但是井下心来,理解,需要把我一下几点。 首先讲友元函数。 (1)友元函数: 1)C++中引入友元函数,是为在该类中提供一个对外(除...

天王盖地虎626
今天
2
0
OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
808
11
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
5
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部