青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

昨天優化了一下服務器的網絡部分,測試了一下,在不考慮吞吐率的情況下,并發5W

昨天優化了一下服務器的網絡部分,測試了一下,在不考慮吞吐率的情況下,并發5W

下面是俺的一些經驗

1.基本結構

服務器結構如下圖
33.JPG

使用2個不同的線程池來分別來處理 網絡數據包的發送接收 以及 消息的處理.
這樣可以避免繁重的業務處理導致網絡數據包接收的阻塞.

根據服務器CPU情況創建線程. 服務器是2*4核心. 即雙CPU, 每CPU上有4個核心.
在邏輯上就有8個處理單元.

在第1個CPU上的每個核心上創建x個線程用于發送和接收.
即: 發送接收線程池有線程數 x*4個,位于第1個CPU上.

在第2個CPU上的每個核心上創建y個線程,用于業務處理
即: 業務處理線程池有線程數 y*4個,位于第2個CPU上

具體的x,y應該按照實際的系統設置.設置的原則是:
1. 盡量小的線程上下文切換開銷
2. 盡量高的CPU利用率(注意,是利用率,不是占用率)
一般來說,y>x

BOOL?WINAPI?SetProcessAffinityMask(
??__in??????????HANDLE?hProcess,
??__in??????????DWORD_PTR?dwProcessAffinityMask
);
// ?此API用于設置進程的CPU親緣屬性,第2個參數是"位或"表示.?對于2*4核系統,則設置位0xFF

DWORD_PTR?WINAPI?SetThreadAffinityMask(
??__in??????????HANDLE?hThread,
??__in??????????DWORD_PTR?dwThreadAffinityMask
);
// ?此API用于設置線程的CPU親緣屬性,第2個參數是"位或"表示.?需要注意的是,dwThreadAffinityMask必須是dwProcessAffinityMask的子集

DWORD?WINAPI?SetThreadIdealProcessor(
??__in??????????HANDLE?hThread,
??__in??????????DWORD?dwIdealProcessor
);
// ?此API用于設置線程的首選CPU,操作系統在調度線程時優先考慮首選核心,?第2個參數是以0為基數的處理器ID

上述3個API都可以用來設置線程的執行單元是哪個. 一般來說,線程調度是由操作系統負責.人為的控制有時候反而會降低效率.但針對高負荷的線程處理,完全可以指定獨立的CPU來優化.
比如,設定dwThreadAffinityMask=0xF,表示此線程在1-4核上執行,具體是哪個核還是由操作系統調度.這樣可以將不同用途的線程分配到不同的CPU上,因為每個CPU有自己獨立的L2 Cache,這樣做可以避免不同類型線程在不同CPU之間切換帶來的損失.
參考: 面向共享高速緩存多核系統的軟件技術

上面所說的這些都只是理論,到實際的系統中,必須經過反復的性能對比試驗來確定最佳方案

2. 登陸數據的接收
在IOCP中,經常使用AcceptEx來投遞前置式的accept請求. 這里有一個問題: 登陸數據如何接收?
一般來說,登陸數據包是連接后的第1個或者第2個數據包.必須先保證一個TCP連接是信任的才能進行業務處理.有下列方法

方法1:
如果登陸數據包是第一個客戶端發送的數據包,那么AcceptEx的dwReceiveDataLength 可以設置成登陸數據包大小,AcceptEx只有在收到此數據包后才投遞到完成隊列進行驗證

方法2:
AcceptEx的dwReceiveDataLength 設置成0,表示在接收到連接后立即投遞到完成隊列.在完成隊列中,投遞WSARecv獲得登陸數據包

方法3:
AcceptEx的dwReceiveDataLength 設置成0,表示在接收到連接后立即投遞到完成隊列.在Accept時,使用阻塞的recv來接收登陸數據包,如果recv超時,則踢掉連接

這3種方式沒有哪種能夠徹底的解決D.O.S的問題,只能在一定程度上緩解.
方法1:客戶端只連接不發送數據,大量的這種連接會導致拒絕服務(一般采用附加線程定時檢測超時)
方法2:客戶端只連接不發送數據,大量的這種連接會導致拒絕服務(一般采用附加線程定時檢測超時)
方法3:recv的超時時間設置很敏感,過大的超時時間同樣會因為大量連接而拒絕服務(recv超時時間設定得如果合適是能夠在一定程度上緩解)

3. 設置LINGER縮短連接關閉時間

// ?éè??SO_DONTLINGER
BOOL?bDontLinger? = ?FALSE;
::setsockopt(?lpWsaOverlappedPlus
-> hSocket
????,?SOL_SOCKET
????,?SO_DONTLINGER
????,?(
const ? char * ) & bDontLinger
????,?sizeof(BOOL)
????);

// ?éè??SO_LINGER
linger?stLinger;
stLinger.l_onoff?
= ? 1 ;
stLinger.l_linger?
= ? 0 ;
::setsockopt(?lpWsaOverlappedPlus
-> hSocket
????,?SOL_SOCKET
????,?SO_LINGER
????,?(CHAR
* ) & stLinger
????,?sizeof(linger)
????);

4. 修改注冊表,修改TCP參數,具體的含義可以查閱MSDN
Windows?Registry?Editor?Version? 5.00

[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Performance ]
" MaxUserPort " = dword:0000fffe

[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters ]
" TCPFinWait2Delay? " = dword:0000001e
" SynAttackProtect " = dword: 1 ?
" TcpMaxPortsExhausted " = dword: 5 ?
" TcpMaxHalfOpen " = dword: 500 ?
" TcpMaxHalfOpenRetried " = dword: 400 ?
" TcpMaxConnectResponseRetransmissions " = dword: 2 ?
" TcpMaxDataRetransmissions " = dword: 2 ?
" EnablePMTUDiscovery " = dword: 0 ?
" KeepAliveTime " = dword: 300000 ?
" NoNameReleaseOnDemand " = dword: 1 ?
" DefaultTTL " = dword: 256 ?
" EnableDeadGWDetect " = dword: 0 ?
" DisableIPSourceRouting " = dword: 1 ?
" EnableFragmentChecking " = dword: 1 ?
" EnableMulticastForwarding " = dword: 0 ?
" IPEnableRouter " = dword: 0 ?
" EnableAddrMaskReply " = dword: 0 ?
" TcpTimedWaitDelay " = dword:0000001e

[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters ] ?
" EnableICMPRedirect " = dword: 0 ?
" EnableDynamicBacklog " = dword: 1 ?
" MinimumDynamicBacklog " = dword: 20 ?
" MaximumDynamicBacklog " = dword: 20000 ?
" DynamicBacklogGrowthDelta " = dword: 10 ?

Feedback

# re: 昨天優化了一下服務器的網絡部分,測試了一下,在不考慮吞吐率的情況下,并發5W   回復  更多評論   

2009-01-16 11:16 by true
一個很關鍵的問題:
對于一個客戶端的收包及發包順序是怎么判斷的呢,舉例:客戶端給服務器傳輸文件,肯定是多次發包,同時服務器給客戶端多次確認,這種情況,請問是怎么實現的同步的呢?或者是怎么解決的文件傳輸的呢

# re: 昨天優化了一下服務器的網絡部分,測試了一下,在不考慮吞吐率的情況下,并發5W   回復  更多評論   

2009-01-16 18:07 by tzhang
可以提供個代碼下載么?
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区二区三区在线观看视频 | 欧美一级在线视频| 国产精品久久毛片a| 久久久久久久97| 欧美高潮视频| 欧美在线免费视屏| 欧美成人精品在线观看| 亚洲一区二区三区精品在线观看| 欧美在线视频一区二区三区| 日韩亚洲成人av在线| 欧美一区二区在线播放| 亚洲精品黄色| 久久av红桃一区二区小说| 91久久精品美女高潮| 亚洲欧美一区二区三区极速播放| 亚洲精品一区二区三区樱花| 欧美一区二区成人6969| 亚洲视屏在线播放| 久久最新视频| 久久精品综合| 国产精品久久久99| 亚洲黄色在线视频| 国产一区二区三区四区三区四 | 国产夜色精品一区二区av| 亚洲三级观看| 最新热久久免费视频| 先锋影音国产精品| 亚洲综合电影一区二区三区| 免费欧美视频| 免费人成精品欧美精品| 国产丝袜美腿一区二区三区| 亚洲午夜在线观看| 在线视频欧美一区| 欧美激情第六页| 亚洲高清视频一区二区| 国产亚洲欧美色| 亚洲一区欧美一区| 亚洲一区二区三区影院| 欧美激情精品久久久六区热门| 蜜桃av久久久亚洲精品| 黄色在线一区| 久久精精品视频| 久久亚洲一区| 国内精品久久久久影院优| 午夜精品一区二区在线观看| 午夜精品久久久久久久蜜桃app| 欧美日韩午夜| 亚洲欧美自拍偷拍| 久久精品综合一区| 亚洲精品人人| 欧美另类亚洲| 一本色道久久综合狠狠躁的推荐| 一本一本a久久| 欧美日韩专区在线| 亚洲图片欧美午夜| 欧美在线视频免费观看| 国内精品视频久久| 久久亚洲一区二区三区四区| 欧美国产免费| 亚洲另类在线视频| 欧美日韩国产999| 亚洲一区在线播放| 久久高清一区| 亚洲国产美女| 国产精品成人aaaaa网站 | 91久久久在线| 欧美日韩在线播放一区| 亚洲夜晚福利在线观看| 久久国产精品99精品国产| 国产一区二区三区四区三区四| 久久人人97超碰国产公开结果 | 国产亚洲网站| 麻豆成人在线播放| 一区二区三区欧美日韩| 久久av免费一区| 在线观看视频一区二区欧美日韩| 免费亚洲电影在线| 一区二区不卡在线视频 午夜欧美不卡在| 午夜精品久久久久久久99黑人| 国内一区二区在线视频观看| 欧美不卡一卡二卡免费版| 亚洲视频免费在线观看| 久久只精品国产| 亚洲午夜久久久| 狠色狠色综合久久| 欧美日韩天堂| 久久久亚洲午夜电影| 一区二区三区不卡视频在线观看| 久久久久国产精品一区二区| 日韩天天综合| 国语自产偷拍精品视频偷 | 亚洲福利视频一区| 亚洲综合首页| 亚洲国产美女| 国产中文一区二区三区| 欧美激情一区| 久久精品一区四区| 亚洲午夜视频在线观看| 欧美国产精品日韩| 久久久久久久国产| 亚洲女女做受ⅹxx高潮| 亚洲国产日韩美| 国产一区二区欧美| 欧美视频在线观看| 美日韩免费视频| 欧美一区二区国产| 中文一区二区| 亚洲精品日日夜夜| 欧美福利专区| 蜜臀99久久精品久久久久久软件| 亚洲免费综合| 夜夜嗨网站十八久久| 亚洲激情视频在线| 激情六月婷婷综合| 国产日韩在线不卡| 国产精品久久7| 欧美成人精品h版在线观看| 在线国产亚洲欧美| 性一交一乱一区二区洋洋av| 亚洲国产综合在线看不卡| 国产一区二区精品久久91| 乱码第一页成人| 99精品欧美| 午夜激情亚洲| 亚洲一区二区三区在线看| 樱花yy私人影院亚洲| 国产精品日韩欧美综合| 欧美日韩日本国产亚洲在线 | 99视频有精品| 亚洲精品久久久久久一区二区| 激情伊人五月天久久综合| 国产精品一区在线观看你懂的| 欧美私人网站| 国产精品成人一区二区网站软件| 欧美日韩成人综合天天影院| 欧美精品aa| 欧美日韩国产精品专区| 欧美日韩的一区二区| 欧美精品一区二| 欧美日韩免费一区二区三区| 欧美日本高清视频| 欧美日韩在线电影| 国产精品xxx在线观看www| 国产精品国产三级国产aⅴ入口| 欧美视频二区| 国产欧美成人| 韩国视频理论视频久久| 亚洲第一在线| 日韩一区二区免费看| 日韩小视频在线观看| 一区二区三区偷拍| 午夜精品一区二区三区四区 | 蜜臀久久99精品久久久久久9| 久久精品免费电影| 久久青青草原一区二区| 欧美激情亚洲综合一区| 欧美午夜视频一区二区| 国产欧美精品在线播放| 国产一区二区三区网站| 亚洲高清免费视频| 日韩视频在线观看| 亚洲综合欧美日韩| 久久久99爱| 欧美激情视频网站| 日韩亚洲国产精品| 午夜日韩视频| 欧美freesex交免费视频| 欧美日韩一区二区免费视频| 国产精品亚洲不卡a| 狠狠色狠狠色综合日日小说| 亚洲破处大片| 欧美在线观看视频| 蜜桃av噜噜一区| 一区二区三区回区在观看免费视频| 午夜精品久久久久影视 | 玖玖精品视频| 日韩一区二区精品| 欧美在线首页| 欧美日韩大陆在线| 国外精品视频| 亚洲在线视频| 欧美搞黄网站| 欧美一级夜夜爽| 欧美日韩国产成人在线免费| 国产一区二区精品久久| 一区二区三区精品视频| 久久婷婷麻豆| 一区二区三区欧美日韩| 欧美不卡高清| 国语精品中文字幕| 亚洲欧美日韩国产精品| 国产一区二区三区在线观看视频 | 日韩亚洲欧美一区| 欧美在线精品一区| 欧美日韩在线视频一区二区| 在线播放日韩专区| 午夜精品一区二区三区在线视| 欧美丰满少妇xxxbbb| 欧美亚洲综合在线| 欧美亚洲成人网|