• <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
            原文網(wǎng)址:erlang網(wǎng)絡(luò)編程的幾個(gè)性能調(diào)優(yōu)和注意點(diǎn)
            原文作者:coderplay
            前些天給echo_server寫(xiě)了個(gè)非常簡(jiǎn)單的連接壓力測(cè)試程序,
            下載: stress_test.erl
            • -module(stress_test).  

            • -export([start/0, tests/1]).  

            • start() ->  

            • tests(12345).  

            • tests(Port) ->  

            • io:format("starting~n"),  

            • spawn(fun() -> test(Port)
              end),  

            • spawn(fun() -> test(Port)
              end),  

            • spawn(fun() -> test(Port)
              end),  

            • spawn(fun() -> test(Port)
              end).  

            • test(Port) ->  

            • case
              gen_tcp:connect("192.168.0.217", Port, [binary,{packet, 0}])
              of
            •     {ok, _} ->  

            • test(Port);  

            • _ ->  

            • test(Port)

            • end.

            一開(kāi)始我的這個(gè)stress_test客戶(hù)端運(yùn)行在windows上面,echo_server服務(wù)器端運(yùn)行在linux上面。結(jié)果接受了1016個(gè)連接就停止了. 于是我用ulimit -n改了服務(wù)器端的文件描述符數(shù)量為10240. 接著還是如此,折騰了幾天,最終還是沒(méi)有搞明白。
            于是就求助于公司的linux編程牛人,結(jié)果讓我一倒…  客戶(hù)端沒(méi)有修改文件描述符個(gè)數(shù). windows上得在注冊(cè)表里面改.

            牛人開(kāi)始對(duì)這東西的性能感興趣了,剛好我摸了一陣子erlang的文檔,于是我倆就走向了erlang網(wǎng)絡(luò)連接的性能調(diào)優(yōu)之旅啦~~過(guò)程真是讓人興奮。 我們很快通過(guò)了1024這一關(guān)~~到了4999個(gè)連接,很興奮.
            但為什么4999個(gè)連接呢, 檢查一下代碼終于發(fā)現(xiàn)echo_server.erl定義了一個(gè)宏, 最大連接數(shù)為5000. 我又倒~~
            修改編譯之后, 連接數(shù)跑到101xx多了, 太哈皮了!
            再測(cè)102400個(gè)連接時(shí),到32767個(gè)連接數(shù)erl掛了~說(shuō)是進(jìn)程開(kāi)得太多了. 好在記得這個(gè)erl的參數(shù)+P,可以定義erlang能生成的進(jìn)程數(shù). 默認(rèn)是32768. 改了!
            后面不知怎么著,在81231個(gè)連接停止了. 新的性能瓶頸又卡了我們. 好在牛人對(duì)linux熟, 用strace(這東西會(huì)莫名地退出),stap查出一些苗頭.我也想到在otp文檔好像提過(guò)另一個(gè)limit,那就是端口數(shù)…在此同時(shí)我們發(fā)現(xiàn) erlang在linux上是用的傳統(tǒng)poll模型.但查erlang的源代碼發(fā)現(xiàn)是支持epoll的. 在網(wǎng)上搜了半天,終于搜到了個(gè)maillist的帖子.
            • $./configure --enable-kernel-poll

            由于我們的測(cè)試服務(wù)器是雙核的,我們?cè)谂渲玫臅r(shí)候也打開(kāi)了smp支持. 歡快的make  & make install之后….
            把 /proc/sys/net/ipv4/ip_local_port_range 的內(nèi)容改成了1024到65535. 最多也也能改成65535
            • $echo 1024 65535 > ip_local_port_range

            另外再添加一個(gè)erl的環(huán)境變量
            • $export ERL_MAX_PORTS=102400

            于是開(kāi)始跑了,不過(guò)這次跑不一樣了
            echo_server
            • $erl -noshell  +P 102400 +K true +S 2 -smp -s echo_server start

            stress_test
            • $erl -noshell  +P 102400 +K true +S 2 -smp -s stress_test start

            這里的+K true,表示使用內(nèi)核poll,+S 2 表示兩個(gè)核. 這樣可歡快啦~~~ 10w大關(guān)過(guò)咯! 而且比剛才沒(méi)用epoll的速度快暴多~~
            于是我們又開(kāi)始了204800個(gè)連接發(fā)測(cè)試了~~~
            用top一看cpu占用率極低,服務(wù)器只在5%左右。內(nèi)存也不是很大~~
            posted on 2009-09-14 11:20 暗夜教父 閱讀(499) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): erlang

            <2009年9月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            常用鏈接

            留言簿(2)

            隨筆分類(lèi)

            隨筆檔案

            文章分類(lèi)

            文章檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久精品国产亚洲AV香蕉| 91久久精品电影| 国产精品99久久不卡| 99久久国产热无码精品免费| 久久久久亚洲精品日久生情| 一本久久综合亚洲鲁鲁五月天| 怡红院日本一道日本久久 | 大美女久久久久久j久久| av国内精品久久久久影院| 久久综合给久久狠狠97色| 99精品国产在热久久无毒不卡| 久久精品国产亚洲av影院| 国产精品久久国产精麻豆99网站 | 久久WWW免费人成一看片| 欧美激情一区二区久久久| 亚洲va久久久噜噜噜久久狠狠 | 久久ww精品w免费人成| 精品久久久久久久| 久久国产精品视频| 国产精品成人久久久| 狠狠久久亚洲欧美专区| 久久久久女教师免费一区| 久久亚洲AV无码精品色午夜 | 久久久久国产| 亚洲av伊人久久综合密臀性色| 久久亚洲国产精品一区二区| 思思久久99热免费精品6| 久久久无码人妻精品无码| 久久婷婷五月综合成人D啪 | 中文精品久久久久人妻不卡| 99re久久精品国产首页2020| 久久无码人妻精品一区二区三区| 欧美精品久久久久久久自慰| 日本久久久久久久久久| 中文精品久久久久国产网址| 99久久99久久精品国产片果冻| 国内精品伊人久久久久| 亚洲国产另类久久久精品| 久久综合视频网站| 91久久国产视频| 久久国产精品-久久精品|