• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            教父的告白
            一切都是紙老虎
            posts - 82,  comments - 7,  trackbacks - 0
            轉(zhuǎn)自http://coderplay.javaeye.com/blog/94209

            前些天給echo_server寫了個非常簡單的連接壓力測試程序,

               1.  -module(stress_test).  
               
            2.   
               
            3-export([start/0, tests/1]).  
               
            4.   
               
            5. start() ->  
               
            6.     tests(12345).  
               
            7.   
               
            8. tests(Port) ->  
               
            9.     io:format("starting~n"),  
              
            10.     spawn(fun() -> test(Port) end),  
              
            11.     spawn(fun() -> test(Port) end),  
              
            12.     spawn(fun() -> test(Port) end),  
              
            13.     spawn(fun() -> test(Port) end).  
              
            14.   
              
            15. test(Port) ->  
              
            16.      case gen_tcp:connect("192.168.0.217", Port, [binary,{packet, 0}]) of  
              
            17.     {ok, _} ->  
              
            18.             test(Port);  
              
            19.     _ ->  
              
            20.         test(Port)  
              
            21.     end.  
            一開始我的這個stress_test客戶端運行在windows上面, echo_server服務器端運行在linux上面。 結(jié)果接受了1016個連接就停止了. 于是我用ulimit -n 改了服務器端的文件描述符數(shù)量為10240. 接著還是如此,折騰了幾天,最終還是沒有搞明白。

            于是就求助于公司的linux編程牛人,結(jié)果讓我一倒...  客戶端沒有修改文件描述符個數(shù). windows上得在注冊表里面改.
            牛人開始對這東西的性能感興趣了,剛好我摸了一陣子erlang的文檔,于是我倆就走向了erlang網(wǎng)絡連接的性能調(diào)優(yōu)之旅啦~~過程真是讓人興奮。 我們很快通過了1024這一關~~到了4999個連接,很興奮.

            但為什么4999個連接呢, 檢查一下代碼終于發(fā)現(xiàn)echo_server.erl定義了一個宏, 最大連接數(shù)為5000. 我又倒~~
            修改編譯之后, 連接數(shù)跑到101xx多了, 太哈皮了!
            再測102400個連接時,到32767個連接數(shù)erl掛了~說是進程開得太多了. 好在記得這個erl的參數(shù)+P,可以定義erlang能生成的進程數(shù). 默認是32768. 改了!

            后面不知怎么著,在81231個連接停止了. 新的性能瓶頸又卡了我們.  好在牛人對linux熟, 用strace(這東西會莫名地退出), stap查出一些苗頭.   我也想到在otp文檔好像提過另一個limit,那就是端口數(shù)...在此同時我們發(fā)現(xiàn)erlang在linux上是用的傳統(tǒng)poll模型. 但查erlang的源代碼發(fā)現(xiàn)是支持epoll的. 在網(wǎng)上搜了半天,終于搜到了個maillist的帖子.

            代碼
            1. $./configure --enable-kernel-poll  

            由于我們的測試服務器是雙核的,我們在配置的時候也打開了smp支持.  歡快的make  & make install之后....
            把 /proc/sys/net/ipv4/ip_local_port_range 的內(nèi)容改成了1024到65535.  最多也也能改成65535 :)

            代碼
            1. $echo 1024 65535 > ip_local_port_range  

            另外再添加一個erl的環(huán)境變量
            代碼
            1. $export ERL_MAX_PORTS=102400  

            于是開始跑了,不過這次跑不一樣了
            echo_server
             
            1. $erl -noshell  +P 102400 +K true +S 2 -smp -s echo_server start  
               
            stress_test
             
            1. $erl -noshell  +P 102400 +K true +S 2 -smp -s stress_test start  
            這里的+K true,表示使用內(nèi)核poll,+S 2 表示兩個核. 這樣可歡快啦~~~ 10w大關過咯! 而且比剛才沒用epoll的速度快暴多~~
            于是我們又開始了204800個連接發(fā)測試了~~~

            用top一看cpu占用率極低,服務器只在5%左右。 內(nèi)存也不是很大~~

            posted on 2009-09-14 12:25 暗夜教父 閱讀(625) 評論(0)  編輯 收藏 引用 所屬分類: erlang

            <2009年10月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            九九精品99久久久香蕉| 亚洲精品tv久久久久久久久久| 91精品国产高清久久久久久io | 7国产欧美日韩综合天堂中文久久久久 | 国产成人无码精品久久久性色| 久久亚洲春色中文字幕久久久 | 精品国产热久久久福利| 精品一二三区久久aaa片| 国产一区二区精品久久 | 狠狠色丁香婷婷久久综合不卡| 日韩欧美亚洲综合久久影院Ds | 伊人久久大香线蕉综合网站| 91精品国产综合久久婷婷| 久久天天躁狠狠躁夜夜躁2014| 色综合久久天天综合| 久久婷婷五月综合国产尤物app| 精品久久久久久99人妻| 精品久久久久久久无码| 日本WV一本一道久久香蕉| 久久国产成人午夜AV影院| 九九久久99综合一区二区| 久久婷婷成人综合色综合| 久久久久亚洲国产| 伊人精品久久久久7777| 久久人人爽人人爽人人片AV麻豆| 久久免费美女视频| AV无码久久久久不卡网站下载 | 久久精品免费全国观看国产| 久久久久99精品成人片牛牛影视| 欧美综合天天夜夜久久| 91精品国产综合久久四虎久久无码一级| 久久综合狠狠综合久久| 久久久久免费精品国产| 亚洲AV日韩精品久久久久久| 中文字幕日本人妻久久久免费 | 久久99国产精品久久| 伊人久久大香线焦综合四虎| 狠狠综合久久综合中文88| 日本久久久久久久久久| 中文字幕久久精品无码| 九九久久自然熟的香蕉图片|