[問題] 大量連線數如何降低I/O 提升傳輸速度

作者: sunfox ( )   2019-05-02 17:43:06
提供服務的主機 會跑很多數據出來
外網 client端(windows ) 執行連線程式
向提供服務主機發出連線需求...
主機會啟動一隻程式供client 建立連線
連線建立後 主機就開始透過Socket主動且持續的傳送數據到外網 windows client
如果外網有一千個client端要連線
主機上同樣的程式會執行一千隻
最近在檢討這樣的系統是不是能有更好的設計
因為系統會花時間在程式的start 與 stop
如果說 外網client的的程式有50000隻
在三個小時的時間內 都一直有client 程式 上上下下 (執行與關閉)
這樣在IO 上與建立連線時 會浪費很多時間與機器的效能
要怎樣去改寫這樣的架構
讓速度變快 時間變短 效能更好
我想到的是 如 FTP
1000個人連FTP server FTP程式也不會跑1000隻啊
apache 也是
誰能給我一個方向與概念
謝謝
PS 主機端的連線程式是C寫的
作者: tjjh89017 (伊達政宗)   2019-05-02 18:00:00
Event driven的方式?
作者: ckvir (ckvir)   2019-05-05 04:52:00
好奇的問一下 一般 server 不是都開一個process 等client,為什麼會寫成只要有client 就開一個process?不是應該一個process等client ,有 client 再開thread?
作者: tjjh89017 (伊達政宗)   2019-05-06 03:41:00
開跟關process的成本都很高,所以有時候會先開起來放,有些則是一個thread負責很多client
作者: leolarrel (真.粽子無雙)   2019-05-11 12:02:00
參考apache 的設計
作者: dces4212 (flawless)   2019-05-13 00:58:00
threadpool
作者: wens (文思)   2019-05-14 00:04:00
這不是經典題目嗎? C10K
作者: shooter555 (shooter)   2019-05-22 16:11:00
沒寫過大量連線的service 好奇問一下 threads不會爆嗎不是有數量上限在同一隻process內喔喔 查了一下c10k linux就是用epoll
作者: WPC001 (好悶, 迷惘~~)   2019-05-22 21:30:00
threadpool +1
作者: wens (文思)   2019-06-04 14:19:00
一直開關 thread 也是有成本的
作者: dennisxkimo (Dennis(一上B就糟糕))   2019-06-07 23:13:00
這種需求個人服務會想走WebService,提供Client API

Links booklink

Contact Us: admin [ a t ] ucptt.com