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

看板LinuxDev作者 (文思)時間3年前 (), 編輯推噓1(100)
留言1則, 1人參與, 3年前最新討論串3/3 (看更多)
剛好最近 Hacker News 上有人做了 C10k 問題的現代化教材 https://unixism.net/2019/04/linux-applications-performance-introduction/ 討論串: https://news.ycombinator.com/item?id=20081488 從最基本的收一個處理一個,到簡單的 forking,multithreading, 到 pre-fork, pre-threading (thread pool) 到用各種 API 去等待 I/O。 過去在 Linux 上還有 accept lock contention 的問題, 不過印象中最近的 kernel 已經修掉了。 ※ 引述《sunfox (野獸派的紳士)》之銘言: : sunfox: 首先感謝推文的鄉民 給的建議 : sunfox: 我既然發問 有人回答 我也應該回應 : → tjjh89017: Event driven的方式? 05/02 18:00 : sunfox: 我沒寫過程式 也不懂程式 所以懂得沒那麼多 : → ckvir: 好奇的問一下 一般 server 不是都開一個process 等client, 05/05 04:52 : → ckvir: 為什麼會寫成只要有client 就開一個process? 05/05 04:52 : → ckvir: 不是應該一個process等client ,有 client 再開thread? 05/05 04:55 : sunfox: 程式作者依這樣的架構寫出程式並上線 也是很多年前的事 : sunfox: 當時資料量沒有現在這麼大 程式單純 所耗的資源也不多 : sunfox: client端對連線的速度要求還沒有這麼大 : sunfox: 且主機只要順順的送出資料 一切都遊刃有餘 : sunfox: 一晃眼過了很多年 作者只需要適時的修改程式 : sunfox: 程式技能也沒再用到 : 推 tjjh89017: 開跟關process的成本都很高,所以有時候會先開起來放, 05/06 03:41 : → tjjh89017: 有些則是一個thread負責很多client 05/06 03:41 : sunfox : 現在主要是開跟關process會花時間 且未來上級機關的資料傳遞方式 : sunfox : 有變化 如果架構不改 數據傳輸會延遲太多 : → leolarrel: 參考apache 的設計 05/11 12:02 : 對啊... 要來研究一下 : 推 dces4212: threadpool : 這也是一個關鍵字 謝謝你 : 以上大家的建議 很謝謝 : ※ 引述《sunfox (野獸派的紳士)》之銘言: : : 提供服務的主機 會跑很多數據出來 : : 外網 client端(windows ) 執行連線程式 : : 向提供服務主機發出連線需求... : : 主機會啟動一隻程式供client 建立連線 : : 連線建立後 主機就開始透過Socket主動且持續的傳送數據到外網 windows client : : 如果外網有一千個client端要連線 : : 主機上同樣的程式會執行一千隻 : : 最近在檢討這樣的系統是不是能有更好的設計 : : 因為系統會花時間在程式的start 與 stop : : 如果說 外網client的的程式有50000隻 : : 在三個小時的時間內 都一直有client 程式 上上下下 (執行與關閉) : : 這樣在IO 上與建立連線時 會浪費很多時間與機器的效能 : : 要怎樣去改寫這樣的架構 : : 讓速度變快 時間變短 效能更好 : : 我想到的是 如 FTP : : 1000個人連FTP server FTP程式也不會跑1000隻啊 : : apache 也是 : : 誰能給我一個方向與概念 : : 謝謝 : : PS 主機端的連線程式是C寫的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.76 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1559629990.A.AB7.html

06/26 20:30, 3年前 , 1F
看到大大 先推再說
06/26 20:30, 1F
文章代碼(AID): #1SzX2cgt (LinuxDev)
文章代碼(AID): #1SzX2cgt (LinuxDev)