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

看板LinuxDev作者 (野獸派的紳士)時間3年前 (), 編輯推噓2(2013)
留言15則, 8人參與, 3年前最新討論串1/3 (看更多)
提供服務的主機 會跑很多數據出來 外網 client端(windows ) 執行連線程式 向提供服務主機發出連線需求... 主機會啟動一隻程式供client 建立連線 連線建立後 主機就開始透過Socket主動且持續的傳送數據到外網 windows client 如果外網有一千個client端要連線 主機上同樣的程式會執行一千隻 最近在檢討這樣的系統是不是能有更好的設計 因為系統會花時間在程式的start 與 stop 如果說 外網client的的程式有50000隻 在三個小時的時間內 都一直有client 程式 上上下下 (執行與關閉) 這樣在IO 上與建立連線時 會浪費很多時間與機器的效能 要怎樣去改寫這樣的架構 讓速度變快 時間變短 效能更好 我想到的是 如 FTP 1000個人連FTP server FTP程式也不會跑1000隻啊 apache 也是 誰能給我一個方向與概念 謝謝 PS 主機端的連線程式是C寫的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.67.114 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1556790188.A.4B6.html

05/02 18:00, 3年前 , 1F
Event driven的方式?
05/02 18:00, 1F

05/05 04:52, 3年前 , 2F
好奇的問一下 一般 server 不是都開一個process 等client,
05/05 04:52, 2F

05/05 04:52, 3年前 , 3F
為什麼會寫成只要有client 就開一個process?
05/05 04:52, 3F

05/05 04:55, 3年前 , 4F
不是應該一個process等client ,有 client 再開thread?
05/05 04:55, 4F

05/06 03:41, 3年前 , 5F
開跟關process的成本都很高,所以有時候會先開起來放,
05/06 03:41, 5F

05/06 03:41, 3年前 , 6F
有些則是一個thread負責很多client
05/06 03:41, 6F

05/11 12:02, 3年前 , 7F
參考apache 的設計
05/11 12:02, 7F

05/13 00:58, 3年前 , 8F
threadpool
05/13 00:58, 8F

05/14 00:04, 3年前 , 9F
這不是經典題目嗎? C10K
05/14 00:04, 9F

05/22 16:11, 3年前 , 10F
沒寫過大量連線的service 好奇問一下 threads不會爆嗎
05/22 16:11, 10F

05/22 16:11, 3年前 , 11F
不是有數量上限在同一隻process內
05/22 16:11, 11F

05/22 16:19, 3年前 , 12F
喔喔 查了一下c10k linux就是用epoll
05/22 16:19, 12F

05/22 21:30, 3年前 , 13F
threadpool +1
05/22 21:30, 13F

06/04 14:19, 3年前 , 14F
一直開關 thread 也是有成本的
06/04 14:19, 14F

06/07 23:13, 3年前 , 15F
這種需求個人服務會想走WebService,提供Client API
06/07 23:13, 15F
文章代碼(AID): #1SohkiIs (LinuxDev)
文章代碼(AID): #1SohkiIs (LinuxDev)