A. linux伺服器開發
做linux伺服器開發首先要精通Linux下的C語言開發技術,其次要對Linux 操作系統理解透徹,最好做一次LFS(用源程序編譯生成自己的Linux 操作系統)。第三,對伺服器端運行的主要軟體系統要有所了解,如,NFS、Samba、DNS、DHCP、Apache、FTP、SendMail、Iptables、PHP、MySQL等。有些應用系統有多種可選的,你至少需要了解最多人採用的其中一種。
B. Linux系統需要學習什麼知識
首先 linux 操作系統是必不可少的
Linux系統如果是學習可以選用redhat或者centos,特別是centos在企業中用得最多,當然還會有其它版本的,比如ubuntu,suse, debian等在企業當中也用的相當多系統的基本使用、磁碟管理、軟體包管理、進程管理、用戶管理等等這些都是學習的重點
最常見的一些簡單服務
服務的種類繁多,每家公司都會用到的服務個不相同,但基礎的服務肯定要掌握,比如ssh,apache,at,crontab,ftp,dns,nfs,nginx等等,不光是部署,還要很熟悉裡面的配置才行,因為公司最關鍵的絕對是Web伺服器,所以nginx和apache要特別熟悉,有些公司還會用tomcat,這個也需要會。
bash腳本編程
shell是運維人員必須具備的,不懂這個連入職都不行,至少也要寫出一些系統管理腳本,最簡單也得寫個監控CPU,內存比率的腳本!這是最最最基本了,別以為會寫那些猜數字和計算什麼數的,這些沒什麼作用,只作學習意義,寫系統腳本才是最有意義
sed和awk是腳本編程過程當中的重中之重, 必須要掌握,在掌握這兩個工具同時,還要掌握正則表達式,正則是最難學的表達式,但結合到sed和awk中會很強大,在處理文本內容和過濾Web內容時十分有用,不過在學shell的同時一般會經常結合用到的。
文本處理命令
各種小命令,比如sort , tr , cut, paste, uniq, tee等是必學的
資料庫
MySQL,linux用得最多絕對是MySQL,增刪改查必學,特別要學熟查,其它方面可能不太需要,因為運維人員使用最多還是查,哪些優化和開發語句不會讓你弄的。
防火牆
不學不行,防火牆也算是個難點,說難不難,說易不易,最重要弄懂規則,如果學過CCNA的朋友可能會比較好學,因為iptables也有NAT表,原理是一樣的,而FILTER表用得最多,反正不學就肯定不合格。
監控工具
十分重要,zibbix、prometheus暫時可以2選1,但是企業用得最多是zibbix,因為prometheus是新一代監控,具體什麼時候成熟應用還是不那麼確定的,現在確定的是它在容器監控中絕對是重中之重。
集群和熱備
很重要,必須要懂,集群工具很多,LVS、nginx等等,還有熱備,這個就更多工具能實現了,比如keepalived、rhcs等等
數據備份
工具有很多,但至少要把RAID的原理弄懂,特別是企業最常用的1+0或0+1,自己做實驗也要弄出來,備份工具有很多,如tar, mp, rsync等
自動化運維工具
ansible,puppet,saltstack等等都是非常流行的自動化運維工具,但是比較難掌握
雲平台
Openstack,cloudstack等等,尤其是openstack是現在絕大部分公司採用的公有雲或者私有雲底層平台,在一個滿世界都是雲的it時代,不懂點雲的東西還真是不行
容器平台
繼雲之後的又一新興技術,現在火的一塌糊塗,docker,kubernetes等等,幾乎可以說是現在想拿高薪,必學的東西
C. 做Linux運維要學哪些東西什麼順序主要需要什麼能力
運維需要用到的東西很雜,從硬體設備到軟體維護。
硬體設備 比如伺服器的安裝 網路的部署布局 ,最好能夠了解防火牆,路由器,交換機的設置。
linux系統的深入了解。最好能夠深入到內核和代碼層面
部署在linux伺服器上的應用的了解和維護,比如tomcat apache weblogic nagios cacti等。包括開發人員編寫的軟體,都需要去進行維護和調優建議,最好了解js和java語言。伺服器的各種使用情況的監控,如磁碟,cpu,mem,io等。
架構設計的了解,以及自動化運維的腳本編寫。
比如搭建集群或負載模式的架構等,實現伺服器的多機熱備高可用。
腳本編寫,以減少人力操作來提高執行效率和准確性,一般需要shell,python,perl一類的語言基礎,也包括awk,except等小語種使用。
資料庫的維護
熟悉主流的資料庫操作,主要是添刪改查的操作。
oracle,mysql,芒果db,db2,memcache,redis等
D. 想學習Linux該學什麼
Linux入門並不困難,只要具備Linux基礎,讀懂Linux的命令格式,大多數的服務架構都是可以按照文檔部署出來。當然做Linux開發,如果自己沒有學習方向和課程大綱還是比較困難的,個人建議去參加培訓學習更有效率,如果報班學習則大概需要4-6個月時間。
學習主要內容有:
1)網路基礎與linux系統的管理
2)優化及高可用技能
3)虛擬化與雲平台技術
4)開發運維
畢業後可從事的工作有:
1)Linux運維工程師
2)資料庫工程師
3)雲計算運維工程師
4)自動化運維工程師
5)雲計算架構工程師等
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
E. linux伺服器的介紹
Linux伺服器就是採用Linux系統的網路伺服器,同時也有採用windows的伺服器,作用是類似的。而Linux並不是一個特定的系統,而是使用Linux內核的系統, 現在發行版很多,Red hat是其中一個發行版。
Linux伺服器是被設計用於處理業務應用,如網路和系統管理,資料庫管理和Web服務等,是具備高性能和開源性的一種伺服器。
常用的linux伺服器性的命令
F. 新手做linux運維需要學哪些知識
1、Linux系統基礎
嚴格的來講,Linux 不算是一個操作系統,只是一個 Linux 系統中的內核,即計算機軟體與硬體通訊之間的平台;Linux的全稱是GNU/Linux,這才算是一個真正意義上的Linux系統。GNU是Richard Stallman組織的一個項目,世界各地的程序員可以變形GNU程序,同時遵循GPL協議,允許任何人任意改動。但是,修改後的程序必須遵循GPL協議。
Linux 是一個多用戶多任務的操作系統,也是一款自由軟體,完全兼容POSIX標准,擁有良好的用戶界面,支持多種處理器架構,移植方便。
為程序分配系統資源,處理計算機內部細節的軟體叫做操作系統或者內核。如果你希望詳細了解操作系統的概念,請查看操作系統教程。
用戶通過Shell與Linux內核交互。Shell是一個命令行解釋工具(是一個軟體),它將用戶輸入的命令轉換為內核能夠理解的語言(命令)。
2、網路服務
服務有很多種,每間公司都會用到不同的,但基礎的服務肯定要掌握,如FTP, DNS,SAMBA, 郵件, 這幾個大概學一下就行。
其實網路服務方面不用太擔心,一般公司的環境都已經搭建好,就算有新伺服器或讓你整改,公司會有相應的文檔讓你參照來弄,不會讓你亂來的,但至少相關的配置一定要學熟,而且肯定是編譯安裝多,那些模塊要熟悉一下他的作用,特別是PHP那些模塊。
這面2點只是基礎,也是必要條件,不能說是工具,下以才是真正的要掌握的工具。
3、shell腳本和另一個腳本語言
shell是運維人員必須具備的,不懂這個連入職都不行,至少也要寫出一些系統管理腳本,最簡單也得寫個監控CPU,內存比率的腳本吧,這是最最最基本了。別以為會寫那些猜數字和計算什麼數的,這些沒什麼作用,只作學習意義,寫系統腳本才是最有意義。
Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行 。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令並且把它們送到內核。不僅如此,Shell有自己的編程語言用於對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。
Linux提供了像MicrosoftWindows那樣的可視的命令輸入界面--X Window的圖形用戶界面(GUI)。它提供了很多桌面環境系統,其操作就像Windows一樣,有窗口、圖標和菜單,所有的管理都是通過滑鼠控制。GNOME。
每個Linux系統的用戶可以擁有他自己的用戶界面或Shell,用以滿足他們自己專門的Shell需要。
同Linux本身一樣,Shell也有多種不同的版本。主要有下列版本的Shell:
Bourne Shell:是貝爾實驗室開發的。
BASH:是GNU的Bourne Again Shell,是GNU操作系統上默認的shell。
Korn Shell:是對Bourne SHell的發展,在大部分內容上與Bourne Shell兼容。
C Shell:是SUN公司Shell的BSD版本。
Z Shell:The last shell you』ll ever need! Z是最後一個字母,也就是終極Shell。它集成了bash、ksh的重要特性,同時又增加了自己獨有的特性。
而另一個腳本語言是可選的,一般是3P,即Python,Perl和PHP,PHP就不需要考慮了,除非你要做開發,我個人建議學Python會比較好,不難實現自動化運維,Perl是文本處理很強大,反正這兩個學一個就行了。
4、sed和awk工具
必須要掌握,在掌握這兩個工具同時,還要掌握正則表達式,這個就痛苦了,正則是最難學的表達式,但結合到sed和awk中會很強大,在處理文本內容和過濾WEB內容時十分有用,不過在學shell的同時一般會經常結合用到的,所以學第3點就會順便學第4點。
5、文本處理命令
sort , tr , cut, paste, uniq, tee等,必學,也是結合第3點時一並學習的。
6、資料庫
首選MySQL,別問我為什麼不學SQL Server和Oracle,因為Linux用得最多絕對是MySQL。增刪改查必學,特別要學熟查,其它方面可能不太需要,因為運維人員使用最多還是查,哪些優化和開發語句不會讓你弄的。
MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體。
MySQL是一種關系資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標准化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。
由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
7、防火牆
不學不行,防火牆也算是個難點,說難不難,說易不易,最重要弄懂規則。如果學過CCNA的朋友可能會比較好學,因為iptables也有NAT表,原理是一樣的,而Filter表用得最多,反正不學就肯定不合格。
8、監控工具
十分十分重要,我個人建議,最好學這3個,cacti,nagios,zabbix。企業用得最多應該是nagios和zabbix,反正都學吧,但nagios會有點難,因為會涉及到用腳本寫自動監控,那個地方很難。
Zabbix是一個基於WEB界面的提供分布式系統監視以及網路監視功能的企業級的開源解決方案。
Zabbix能監視各種網路參數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網路流量監測圖形分析工具。
Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool復雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。軟體 Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟體,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖。
9、集群和熱備
這個很重要,肯定要懂的,但到了公司就不會讓你去弄,因為新手基本不讓你碰。集群工具有很多,最好學是LVS,這是必學,最好也學學nginx集群,反向代理。還有熱備,這個就更多工具能實現了,像我公司是自己開發熱備工具的,MySQL熱備也要學,就是主從復制,這個別告訴我容易,其實不容易的,要學懂整個流程一點也不容易,只照著做根本沒意思。
10、數據備份
不學不行,工具有很多,但至少要把RAID的原理弄懂,特別是企業最常用的1+0或0+1,自己做實驗也要弄出來,備份工具有很多,如tar, mp, rsync等,最好多了解一下。
G. 關於 Linux 網路,你必須知道這些
我們一起學習了文件系統和磁碟 I/O 的工作原理,以及相應的性能分析和優化方法。接下來,我們將進入下一個重要模塊—— Linux 的網路子系統。
由於網路處理的流程最復雜,跟我們前面講到的進程調度、中斷處理、內存管理以及 I/O 等都密不可分,所以,我把網路模塊作為最後一個資源模塊來講解。
同 CPU、內存以及 I/O 一樣,網路也是 Linux 系統最核心的功能。網路是一種把不同計算機或網路設備連接到一起的技術,它本質上是一種進程間通信方式,特別是跨系統的進程間通信,必須要通過網路才能進行。隨著高並發、分布式、雲計算、微服務等技術的普及,網路的性能也變得越來越重要。
說到網路,我想你肯定經常提起七層負載均衡、四層負載均衡,或者三層設備、二層設備等等。那麼,這里說的二層、三層、四層、七層又都是什麼意思呢?
實際上,這些層都來自國際標准化組織制定的開放式系統互聯通信參考模型(Open System Interconnection Reference Model),簡稱為 OSI 網路模型。
但是 OSI 模型還是太復雜了,也沒能提供一個可實現的方法。所以,在 Linux 中,我們實際上使用的是另一個更實用的四層模型,即 TCP/IP 網路模型。
TCP/IP 模型,把網路互聯的框架分為應用層、傳輸層、網路層、網路介面層等四層,其中,
為了幫你更形象理解 TCP/IP 與 OSI 模型的關系,我畫了一張圖,如下所示:
當然了,雖說 Linux 實際按照 TCP/IP 模型,實現了網路協議棧,但在平時的學習交流中,我們習慣上還是用 OSI 七層模型來描述。比如,說到七層和四層負載均衡,對應的分別是 OSI 模型中的應用層和傳輸層(而它們對應到 TCP/IP 模型中,實際上是四層和三層)。
OSI引入了服務、介面、協議、分層的概念,TCP/IP借鑒了OSI的這些概念建立TCP/IP模型。
OSI先有模型,後有協議,先有標准,後進行實踐;而TCP/IP則相反,先有協議和應用再提出了模型,且是參照的OSI模型。
OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網路互聯事實上的標准。
有了 TCP/IP 模型後,在進行網路傳輸時,數據包就會按照協議棧,對上一層發來的數據進行逐層處理;然後封裝上該層的協議頭,再發送給下一層。
當然,網路包在每一層的處理邏輯,都取決於各層採用的網路協議。比如在應用層,一個提供 REST API 的應用,可以使用 HTTP 協議,把它需要傳輸的 JSON 數據封裝到 HTTP 協議中,然後向下傳遞給 TCP 層。
而封裝做的事情就很簡單了,只是在原來的負載前後,增加固定格式的元數據,原始的負載數據並不會被修改。
比如,以通過 TCP 協議通信的網路包為例,通過下面這張圖,我們可以看到,應用程序數據在每個層的封裝格式。
這些新增的頭部和尾部,增加了網路包的大小,但我們都知道,物理鏈路中並不能傳輸任意大小的數據包。網路介面配置的最大傳輸單元(MTU),就規定了最大的 IP 包大小。在我們最常用的乙太網中,MTU 默認值是 1500(這也是 Linux 的默認值)。
一旦網路包超過 MTU 的大小,就會在網路層分片,以保證分片後的 IP 包不大於 MTU 值。顯然,MTU 越大,需要的分包也就越少,自然,網路吞吐能力就越好。
理解了 TCP/IP 網路模型和網路包的封裝原理後,你很容易能想到,Linux 內核中的網路棧,其實也類似於 TCP/IP 的四層結構。如下圖所示,就是 Linux 通用 IP 網路棧的示意圖:
我們從上到下來看這個網路棧,你可以發現,
這里我簡單說一下網卡。網卡是發送和接收網路包的基本設備。在系統啟動過程中,網卡通過內核中的網卡驅動程序注冊到系統中。而在網路收發過程中,內核通過中斷跟網卡進行交互。
再結合前面提到的 Linux 網路棧,可以看出,網路包的處理非常復雜。所以,網卡硬中斷只處理最核心的網卡數據讀取或發送,而協議棧中的大部分邏輯,都會放到軟中斷中處理。
我們先來看網路包的接收流程。
當一個網路幀到達網卡後,網卡會通過 DMA 方式,把這個網路包放到收包隊列中;然後通過硬中斷,告訴中斷處理程序已經收到了網路包。
接著,網卡中斷處理程序會為網路幀分配內核數據結構(sk_buff),並將其拷貝到 sk_buff 緩沖區中;然後再通過軟中斷,通知內核收到了新的網路幀。
接下來,內核協議棧從緩沖區中取出網路幀,並通過網路協議棧,從下到上逐層處理這個網路幀。比如,
最後,應用程序就可以使用 Socket 介面,讀取到新接收到的數據了。
為了更清晰表示這個流程,我畫了一張圖,這張圖的左半部分表示接收流程,而圖中的粉色箭頭則表示網路包的處理路徑。
了解網路包的接收流程後,就很容易理解網路包的發送流程。網路包的發送流程就是上圖的右半部分,很容易發現,網路包的發送方向,正好跟接收方向相反。
首先,應用程序調用 Socket API(比如 sendmsg)發送網路包。
由於這是一個系統調用,所以會陷入到內核態的套接字層中。套接字層會把數據包放到 Socket 發送緩沖區中。
接下來,網路協議棧從 Socket 發送緩沖區中,取出數據包;再按照 TCP/IP 棧,從上到下逐層處理。比如,傳輸層和網路層,分別為其增加 TCP 頭和 IP 頭,執行路由查找確認下一跳的 IP,並按照 MTU 大小進行分片。
分片後的網路包,再送到網路介面層,進行物理地址定址,以找到下一跳的 MAC 地址。然後添加幀頭和幀尾,放到發包隊列中。這一切完成後,會有軟中斷通知驅動程序:發包隊列中有新的網路幀需要發送。
最後,驅動程序通過 DMA ,從發包隊列中讀出網路幀,並通過物理網卡把它發送出去。
多台伺服器通過網卡、交換機、路由器等網路設備連接到一起,構成了相互連接的網路。由於網路設備的異構性和網路協議的復雜性,國際標准化組織定義了一個七層的 OSI 網路模型,但是這個模型過於復雜,實際工作中的事實標准,是更為實用的 TCP/IP 模型。
TCP/IP 模型,把網路互聯的框架,分為應用層、傳輸層、網路層、網路介面層等四層,這也是 Linux 網路棧最核心的構成部分。
我結合網路上查閱的資料和文章中的內容,總結了下網卡收發報文的過程,不知道是否正確:
當發送數據包時,與上述相反。鏈路層將數據包封裝完畢後,放入網卡的DMA緩沖區,並調用系統硬中斷,通知網卡從緩沖區讀取並發送數據。
了解 Linux 網路的基本原理和收發流程後,你肯定迫不及待想知道,如何去觀察網路的性能情況。具體而言,哪些指標可以用來衡量 Linux 的網路性能呢?
實際上,我們通常用帶寬、吞吐量、延時、PPS(Packet Per Second)等指標衡量網路的性能。
除了這些指標,網路的可用性(網路能否正常通信)、並發連接數(TCP 連接數量)、丟包率(丟包百分比)、重傳率(重新傳輸的網路包比例)等也是常用的性能指標。
分析網路問題的第一步,通常是查看網路介面的配置和狀態。你可以使用 ifconfig 或者 ip 命令,來查看網路的配置。我個人更推薦使用 ip 工具,因為它提供了更豐富的功能和更易用的介面。
以網路介面 eth0 為例,你可以運行下面的兩個命令,查看它的配置和狀態:
你可以看到,ifconfig 和 ip 命令輸出的指標基本相同,只是顯示格式略微不同。比如,它們都包括了網路介面的狀態標志、MTU 大小、IP、子網、MAC 地址以及網路包收發的統計信息。
第一,網路介面的狀態標志。ifconfig 輸出中的 RUNNING ,或 ip 輸出中的 LOWER_UP ,都表示物理網路是連通的,即網卡已經連接到了交換機或者路由器中。如果你看不到它們,通常表示網線被拔掉了。
第二,MTU 的大小。MTU 默認大小是 1500,根據網路架構的不同(比如是否使用了 VXLAN 等疊加網路),你可能需要調大或者調小 MTU 的數值。
第三,網路介面的 IP 地址、子網以及 MAC 地址。這些都是保障網路功能正常工作所必需的,你需要確保配置正確。
第四,網路收發的位元組數、包數、錯誤數以及丟包情況,特別是 TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指標不為 0 時,通常表示出現了網路 I/O 問題。其中:
ifconfig 和 ip 只顯示了網路介面收發數據包的統計信息,但在實際的性能問題中,網路協議棧中的統計信息,我們也必須關注。你可以用 netstat 或者 ss ,來查看套接字、網路棧、網路介面以及路由表的信息。
我個人更推薦,使用 ss 來查詢網路的連接信息,因為它比 netstat 提供了更好的性能(速度更快)。
比如,你可以執行下面的命令,查詢套接字信息:
netstat 和 ss 的輸出也是類似的,都展示了套接字的狀態、接收隊列、發送隊列、本地地址、遠端地址、進程 PID 和進程名稱等。
其中,接收隊列(Recv-Q)和發送隊列(Send-Q)需要你特別關注,它們通常應該是 0。當你發現它們不是 0 時,說明有網路包的堆積發生。當然還要注意,在不同套接字狀態下,它們的含義不同。
當套接字處於連接狀態(Established)時,
當套接字處於監聽狀態(Listening)時,
所謂全連接,是指伺服器收到了客戶端的 ACK,完成了 TCP 三次握手,然後就會把這個連接挪到全連接隊列中。這些全連接中的套接字,還需要被 accept() 系統調用取走,伺服器才可以開始真正處理客戶端的請求。
與全連接隊列相對應的,還有一個半連接隊列。所謂半連接是指還沒有完成 TCP 三次握手的連接,連接只進行了一半。伺服器收到了客戶端的 SYN 包後,就會把這個連接放到半連接隊列中,然後再向客戶端發送 SYN+ACK 包。
類似的,使用 netstat 或 ss ,也可以查看協議棧的信息:
這些協議棧的統計信息都很直觀。ss 只顯示已經連接、關閉、孤兒套接字等簡要統計,而 netstat 則提供的是更詳細的網路協議棧信息。
比如,上面 netstat 的輸出示例,就展示了 TCP 協議的主動連接、被動連接、失敗重試、發送和接收的分段數量等各種信息。
接下來,我們再來看看,如何查看系統當前的網路吞吐量和 PPS。在這里,我推薦使用我們的老朋友 sar,在前面的 CPU、內存和 I/O 模塊中,我們已經多次用到它。
給 sar 增加 -n 參數就可以查看網路的統計信息,比如網路介面(DEV)、網路介面錯誤(EDEV)、TCP、UDP、ICMP 等等。執行下面的命令,你就可以得到網路介面統計信息:
這兒輸出的指標比較多,我來簡單解釋下它們的含義。
其中,Bandwidth 可以用 ethtool 來查詢,它的單位通常是 Gb/s 或者 Mb/s,不過注意這里小寫字母 b ,表示比特而不是位元組。我們通常提到的千兆網卡、萬兆網卡等,單位也都是比特。如下你可以看到,我的 eth0 網卡就是一個千兆網卡:
其中,Bandwidth 可以用 ethtool 來查詢,它的單位通常是 Gb/s 或者 Mb/s,不過注意這里小寫字母 b ,表示比特而不是位元組。我們通常提到的千兆網卡、萬兆網卡等,單位也都是比特。如下你可以看到,我的 eth0 網卡就是一個千兆網卡:
我們通常使用帶寬、吞吐量、延時等指標,來衡量網路的性能;相應的,你可以用 ifconfig、netstat、ss、sar、ping 等工具,來查看這些網路的性能指標。
小狗同學問到: 老師,您好 ss —lntp 這個 當session處於listening中 rec-q 確定是 syn的backlog嗎?
A: Recv-Q為全連接隊列當前使用了多少。 中文資料里這個問題講得最明白的文章: https://mp.weixin.qq.com/s/yH3PzGEFopbpA-jw4MythQ
看了源碼發現,這個地方講的有問題.關於ss輸出中listen狀態套接字的Recv-Q表示全連接隊列當前使用了多少,也就是全連接隊列的當前長度,而Send-Q表示全連接隊列的最大長度