您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用fastcgi模式提高RGW并發數”,在日常操作中,相信很多人在怎么用fastcgi模式提高RGW并發數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用fastcgi模式提高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。
到此,關于“怎么用fastcgi模式提高RGW并發數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。