<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    聶永的博客

    記錄工作/學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。

    100萬(wàn)并發(fā)連接服務(wù)器筆記之測(cè)試端就緒

    重新編寫測(cè)試端程序

    測(cè)試端程序需要增加綁定本機(jī)IP和本地端口的功能,以盡可能的向外發(fā)出更多的tcp請(qǐng)求。需要對(duì)client1.c重構(gòu),增加參數(shù)傳遞。 下面是client2.c的代碼

    若不指定端口,系統(tǒng)會(huì)隨機(jī)挑選沒有使用到的端口,可以節(jié)省些心力。

    編譯:

    gcc -o client2 client2.c -levent
    

    參數(shù)解釋

    • -h 要連接的服務(wù)器IP地址
    • -p 要連接的服務(wù)器端口
    • -m 本機(jī)IP地址需要綁定的隨機(jī)端口數(shù)量
    • -o 本機(jī)所有可用的IP地址列表,注意所有IP地址都應(yīng)該可用

    運(yùn)行:

    ./client2 -h 192.168.190.230 -p 8000 -m 64000 -o 192.168.190.134,192.168.190.143,192.168.190.144,192.168.190.145,192.168.190.146,192.168.190.147,192.168.190.148,192.168.190.149,192.168.190.150,192.168.190.151
    

    太長(zhǎng)了,每次執(zhí)行都要粘貼過去,直接放在一個(gè)client2.sh文件中,執(zhí)行就很簡(jiǎn)單方便多了。

    #!/bin/sh
    ./client2 -h 192.168.190.230 -p 8000 -m 64000 -o 192.168.190.134,192.168.190.143,192.168.190.144,192.168.190.145,192.168.190.146,192.168.190.147,192.168.190.148,192.168.190.149,192.168.190.150,192.168.190.151
    

    保存,賦值可運(yùn)行:

    chmod +x client2.sh
    

    啟動(dòng)測(cè)試:

    sh client2.sh
    

    第三個(gè)遇到的問題:fs.file-max的問題

    測(cè)試端程序client2.c在發(fā)出的數(shù)量大于某個(gè)值(大概為40萬(wàn)時(shí))是,通過dmesg命令查看會(huì)得到大量警告信息:

    [warn] socket: Too many open files in system
    

    此時(shí),就需要檢查/proc/sys/fs/file-max參數(shù)了。

    查看一下系統(tǒng)對(duì)fs.file-max的說明

     /proc/sys/fs/file-max
    This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit,
    RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages about running out of file handles, try increasing this value:
    echo 100000 > /proc/sys/fs/file-max
    The kernel constant NR_OPEN imposes an upper limit on the value that may be placed in file-max.
    If you increase /proc/sys/fs/file-max, be sure to increase /proc/sys/fs/inode-max to 3-4 times the new value of /proc/sys/fs/file-max, or you will run out of inodes.
    

    file-max表示系統(tǒng)所有進(jìn)程最多允許同時(shí)打開所有的文件句柄數(shù),系統(tǒng)級(jí)硬限制。Linux系統(tǒng)在啟動(dòng)時(shí)根據(jù)系統(tǒng)硬件資源狀況計(jì)算出來(lái)的最佳的最大同時(shí)打開文件數(shù)限制,如果沒有特殊需要,不用修改,除非打開的文件句柄數(shù)超過此值。

    在為測(cè)試機(jī)分配4G內(nèi)存時(shí),對(duì)應(yīng)的fs.file-max值為386562,很顯然打開的文件句柄很受限,38萬(wàn)個(gè)左右。 很顯然,無(wú)論是測(cè)試端還是服務(wù)端,都應(yīng)該將此值調(diào)大些,一定要大于等于/etc/security/limits.conf送所設(shè)置的soft nofile和soft nofile值。
    注意ulimit -n,僅僅設(shè)置當(dāng)前shell以及由它啟動(dòng)的進(jìn)程的資源限制。

    備注:以上參數(shù),具有包含和被包含的關(guān)系。

    當(dāng)前會(huì)話修改,可以這么做:

    echo 1048576 > /proc/sys/fs/file-max
    

    但系統(tǒng)重啟后消失。

    永久修改,要添加到 /etc/sysctl.conf 文件中:

    fs.file-max = 1048576
    

    保存并使之生效:

    sysctl -p
    

    再測(cè),就不會(huì)出現(xiàn)此問題了。

    一臺(tái)6G內(nèi)存機(jī)器測(cè)試機(jī),分配7個(gè)網(wǎng)卡,可以做到不占用虛擬內(nèi)存,對(duì)外發(fā)出64000 * 7 = 448000個(gè)對(duì)外持久請(qǐng)求。要完成100萬(wàn)的持久連接,還得再想辦法。

    最終測(cè)試端組成如下:

    • 兩臺(tái)物理機(jī)器各自一個(gè)網(wǎng)卡,每個(gè)發(fā)出64000個(gè)請(qǐng)求
    • 兩個(gè)6G左右的centos測(cè)試端機(jī)器(綁定7個(gè)橋接或NAT連接)各自發(fā)出64000*7 = 448000請(qǐng)求
    • 共使用了16個(gè)網(wǎng)卡(物理網(wǎng)卡+虛擬網(wǎng)卡)
    • 1M ≈ 1024K ≈ 1024000 = (64000) + (64000) + (64000*7) + (64000*7)
    • 共耗費(fèi)16G內(nèi)存,16個(gè)網(wǎng)卡(物理+虛擬),四臺(tái)測(cè)試機(jī)

    備注:
    下面就要完成1M持久連接的目標(biāo),但在服務(wù)端還會(huì)遇到最后一個(gè)問題。

    posted on 2013-04-10 11:07 nieyong 閱讀(7271) 評(píng)論(2)  編輯  收藏 所屬分類: C1M

    評(píng)論

    # re: 100萬(wàn)并發(fā)連接服務(wù)器筆記之測(cè)試端就緒 2014-02-14 17:45 wgf

    ?兩臺(tái)物理機(jī)器各自一個(gè)網(wǎng)卡,每個(gè)發(fā)出64000個(gè)請(qǐng)求
    ?兩個(gè)6G左右的centos測(cè)試端機(jī)器(綁定7個(gè)橋接或NAT連接)各自發(fā)出64000*7 = 448000請(qǐng)求
    ?共使用了16個(gè)網(wǎng)卡(物理網(wǎng)卡+虛擬網(wǎng)卡)
    ?1M ≈ 1024K ≈ 1024000 = (64000) + (64000) + (64000*7) + (64000*7)
    ?共耗費(fèi)16G內(nèi)存,16個(gè)網(wǎng)卡(物理+虛擬),四臺(tái)測(cè)試機(jī)

    請(qǐng)問你這里的意思是兩臺(tái)物理機(jī),各自啟動(dòng)7個(gè)虛擬機(jī),每個(gè)虛擬機(jī)綁定一個(gè)ip嗎  回復(fù)  更多評(píng)論   

    # re: 100萬(wàn)并發(fā)連接服務(wù)器筆記之測(cè)試端就緒 2014-02-20 09:55 西嶺風(fēng)清

    @wgf
    博主說的虛擬網(wǎng)卡是通過ifconfig命令加出來(lái)的,多個(gè)虛擬網(wǎng)卡和物理網(wǎng)卡是同一個(gè)硬件,mac地址是一樣的。  回復(fù)  更多評(píng)論   

    公告

    所有文章皆為原創(chuàng),若轉(zhuǎn)載請(qǐng)標(biāo)明出處,謝謝~

    新浪微博,歡迎關(guān)注:

    導(dǎo)航

    <2013年4月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    統(tǒng)計(jì)

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個(gè)人收藏

    最新隨筆

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲精品免费视频| 国产成人综合亚洲| 四虎成人免费网址在线| 亚洲AV成人无码网天堂| 亚洲一区二区精品视频| 永久在线免费观看| 国产亚洲Av综合人人澡精品| 亚洲女初尝黑人巨高清| 波多野结衣中文字幕免费视频| MM1313亚洲精品无码久久| 亚洲AV无码第一区二区三区| 成人五级毛片免费播放| 中文字幕无码免费久久9一区9| 亚洲一区二区三区久久久久| 久久亚洲精品无码播放| 99re热免费精品视频观看| 精品多毛少妇人妻AV免费久久| 亚洲a级片在线观看| 国产精品亚洲美女久久久| 国产电影午夜成年免费视频| 四虎一区二区成人免费影院网址 | 国产综合亚洲专区在线| 又黄又爽又成人免费视频| 国产大片免费天天看| 亚洲综合一区国产精品| 亚洲av无码国产精品夜色午夜 | 亚洲精品无码专区在线在线播放| 国产v精品成人免费视频400条| 中文字幕成人免费高清在线视频 | 亚洲国产精品成人| 无码日韩人妻av一区免费| 精品亚洲永久免费精品 | 毛片A级毛片免费播放| 免费日本一区二区| 免费无码专区毛片高潮喷水| 亚洲一区二区三区不卡在线播放| 久久综合日韩亚洲精品色| 亚洲精品一级无码中文字幕| 亚洲成年人啊啊aa在线观看| 亚洲三级高清免费| 久久大香伊焦在人线免费|