ref: https://lwn.net/Articles/853637/
如果對 SO_REUSEPORT 這個能夠提供網路服務吞吐量的 socket options 不陌生的話,那這篇文章強烈推薦看看。
本篇文章是從討論開啟 SO_REUSEPORT 這個選項會出現的一些行為以及可能可以怎麼做
最直得看的應該是留言區本身,有很多不同層級的討論,大家最愛講的 Google SRE 人也都出來分享自己的經驗了。
正常情況下,每個 TCP Port 只能被一個 process 給使用來聽取封包,但是對於一些網路重度使用的系統來說,就算讓該 process 將連線給分散到其他的 process 去處理,該 process 依然可能是系統的效能瓶頸。
Linux Kernel 3.9 後引入的 SO_REUSEPORT 參數就是為了解決這個效能問題而來的,這個參數允許多個 Process 同時使用一個 TCP Port,每當底層有一條新的連線請求時, Kernel 會從眾多的候選人之一中挑選一個可用來處理。
這種情況下,網路應用程式就可以專心處理連線工作,然後實務上同時執行多個 Process 即可。底層的 Kernel 會幫忙做連線的負載分配。
當眾多候選 process 其中之一掛掉了(可能是 crash,也有可能是有意的重啟), kernel 會注意到這個候選人要說掰掰,這候選人處理的所有 connection 都會被移除,比較糟糕的是其他待在 Accept-Queue 那些還沒被建立連線的連線請求也會一併被移除。
作者認為 Kernel 應該要有能力可以轉移那些 Accept-queue 中的連線到其他還工作的候選 process 下去處理,這樣使用者/Client 的連線就不會需要處理太多重連的問題。
文章後面都在探討可行的做法以及這個問題可能會導致什麼問題。
留言區滿熱鬧的,譬如說
1. 有人認為 server 重啟的情況實在太少見,有需要為這麽少見的情況導入這麼複雜的修改到 Kernel 中?
a. 有人回答使用 Let's Encrypt 你可能每幾週就要重啟一次。
b. Google SRE 回答其內部因為調整設定的緣由,幾乎無時無刻都需要重啟服務,不過這問題已經從別的層級去處理掉,所以修改 Kernel 對他們的用途不太大。
2. 有人提出 Nginx 本身有 live migration 的功能,可以將 fd 給轉移到其他的 process 去處理。
a. 有人提出這邊談的是 socket/connection 的層級,這些東西都還沒發生到 userspace process 同時也不是 userspace 應用程式可以接觸處理的。
b. 本文探討的是 bind(), accept(), listen() 這類型 function call 之間 kernel 會幫忙做的事情。
有興趣的別忘了閱讀留言區
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
linux server 推薦 在 軟體廚房 Facebook 的最佳解答
因為 .NET Core 的發展,從 Windows 轉換到 Linux 朋友愈來愈多了,推薦一個我長期以來一直在使用的管理工具 - MobaXterm,它支援多種遠端登入的協定,有免費版,而付費版的也不貴,內建的工具很多,我用到的算少。
--
Sftp:直接上傳/下載遠端主機的檔案,而且內建的文字編輯器會直接下載並且打開遠端主機上的檔案,修改完畢還會問你要不要覆蓋遠端主機上的檔案,這個工具讓我脫離了 vi 的掌控。
--
SSH key generator:其實它就是 PuTTYgen,MobaXterm 把它給包進來。
--
Remote Monitoring:即時監控遠端主機的一些硬體數據
--
Marcos:腳本錄製,它會將我們對遠端主機所輸入的鍵盤動作錄製下來。
其他還有很多工具,就請各位朋友自行發掘了,發掘到什麼好用的工具也請不吝分享給我,感謝。
https://mobaxterm.mobatek.net/
linux server 推薦 在 純靠北工程師 Facebook 的最讚貼文
#純靠北工程師2r0
想請問一下各位,目前在準備轉學考如果要做作品增加書審可看性推薦做什麼樣的作品好?
系別 資工類的
能力 JAVA 基礎
網頁設計一般
會Linux,server相關操作認識
謝謝各位的幫忙
👉 去 GitHub 給我們🌟用行動支持純靠北工程師 https://github.com/init-engineer/init.engineer
📢 匿名發文請至 https://kaobei.engineer/cards/create
🥙 全平台留言 https://kaobei.engineer/cards/show/3564