現在的位置: 首頁 > 資料庫 > 正文

怎樣優化CouchDB突破C10K限制

2020年07月02日 資料庫 ⁄ 共 1325字 ⁄ 字型大小 評論關閉

C10K的字面意思是10000並發請求,C10K問題的簡單描述就是一個網路服務並發極限為10k的問題。在當今的技術環境下,C10K其實對很多服務來說已經不是問題。下面學步園小編來講解下怎樣優化CouchDB突破C10K限制?

怎樣優化CouchDB突破C10K限制

第一次測試

採用這個腳本啟動服務,然後使用blitz的壓測服務,使用下面的命令定製測試方法,前30秒將並發從1長到1024,然後維持在1024上30秒。

-rcalifornia-p1-1024:30,1024-1024:30http://our.couch/

得到的結果如下:

當並發量到1024後,各項參數指標都波動很厲害,錯誤頻發。我們看到圖中綠色的響應時間也直線上升。

這個問題是很容易解決的,因為couchdb目前是跑在非特權的couchdb用戶下,其打開文件數上限按系統默認的是1024,所以首先修改這個值:

echo"couchdb-nofile10240">>/etc/security/limits.conf

然後我們再調整一些網路參數:

cat<<'EOF'>>/etc/sysctl.conf

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.ipv4.tcp_rmem=40968738016777216

net.ipv4.tcp_wmem=40966553616777216

net.ipv4.tcp_mem=505766476898152

net.ipv4.tcp_no_metrics_save=1

net.core.netdev_max_backlog=5000

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_max_syn_backlog=100000

net.ipv4.tcp_sack=0

net.core.somaxconn=65535

net.ipv4.ip_local_port_range=102465535

EOF

同樣,再加上對傳輸緩衝區的大小調整

ifconfigeth0txqueuelen10000

怎樣優化CouchDB突破C10K限制

第二次測試

這次我們修改測試的參數,將最大並發調整到10k,得出下面的結果:

結果顯示,在並發達到2300之前,響應時間基本上是一條直線,而並發超過2300以後,響應時間出現了比較大的波動。雖然響應時間從幾毫秒上升到了幾秒,但總的來說,達到了C10K的限制。

這個測試中CouchDB並沒有進行任何DB操作和View操作,測試結果僅僅是對CouchDB在MochiWeb伺服器(Erlang的Web伺服器)上的純性能指標。

作者也指出,實際上此文只是一個簡單的優化與測試,實際上期待有更多的優化方案能夠出現並分享出來。比如可以將Erlang的malloc/free系統調用換成效率更高的tcmalloc調用,還有在任務調度,處理器數,堆棧大小以及垃圾回收等方面都期望能有更進一步的優化方案。

以上就是關於「怎樣優化CouchDB突破C10K限制」的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平台!

抱歉!評論已關閉.