自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提高 Linux上socket 性能的技巧 動(dòng)態(tài)優(yōu)化 GNU/Linux TCP/IP 棧

運(yùn)維 系統(tǒng)運(yùn)維
如何提高Linux上socket的性能,從而加速網(wǎng)絡(luò)應(yīng)用程序,你可以通過使用API來開發(fā)客戶機(jī)和服務(wù)器之間的應(yīng)用程序。本文分節(jié)介紹了Linux上提高socket性能的技巧。

  本文內(nèi)容包括Linux下對(duì)于 Sockets API 的使用、兩個(gè)可以提高性能的 socket 選項(xiàng)以及 GNU/Linux 優(yōu)化。為了能夠開發(fā)性能卓越的應(yīng)用程序,請(qǐng)遵循以下技巧:最小化報(bào)文傳輸?shù)难訒r(shí);最小化系統(tǒng)調(diào)用的負(fù)載;為 Bandwidth Delay Product 調(diào)節(jié) TCP 窗口;動(dòng)態(tài)優(yōu)化 GNU/Linux TCP/IP 棧。

動(dòng)態(tài)優(yōu)化 GNU/Linux TCP/IP 棧:

  標(biāo)準(zhǔn)的 GNU/Linux 發(fā)行版試圖對(duì)各種部署情況都進(jìn)行優(yōu)化。這意味著標(biāo)準(zhǔn)的發(fā)行版可能并沒有對(duì)您的環(huán)境進(jìn)行特殊的優(yōu)化。

  解決方案

  GNU/Linux 提供了很多可調(diào)節(jié)的內(nèi)核參數(shù),您可以使用這些參數(shù)為您自己的用途對(duì)操作系統(tǒng)進(jìn)行動(dòng)態(tài)配置。下面我們來了解一下影響 socket 性能的一些更重要的選項(xiàng)。

  在 /proc 虛擬文件系統(tǒng)中存在一些可調(diào)節(jié)的內(nèi)核參數(shù)。這個(gè)文件系統(tǒng)中的每個(gè)文件都表示一個(gè)或多個(gè)參數(shù),它們可以通過 cat 工具進(jìn)行讀取,或使用 echo 命令進(jìn)行修改。清單 3 展示了如何查詢或啟用一個(gè)可調(diào)節(jié)的參數(shù)(在這種情況中,可以在 TCP/IP 棧中啟用 IP 轉(zhuǎn)發(fā))。

  清單 3. 調(diào)優(yōu):在 TCP/IP 棧中啟用 IP 轉(zhuǎn)發(fā)

  1.   [root@camus]# cat /proc/sys/net/ipv4/ip_forward  
  2.  
  3.   0  
  4.  
  5.   [root@camus]# echo "1" > /poc/sys/net/ipv4/ip_forward  
  6.  
  7.   [root@camus]# cat /proc/sys/net/ipv4/ip_forward  
  8.  
  9.   1  
  10.  
  11.   [root@camus]# 

  表 1 給出了幾個(gè)可調(diào)節(jié)的參數(shù),它們可以幫助您提高 Linux TCP/IP 棧的性能。

可調(diào)節(jié)的參數(shù)

默認(rèn)值

選項(xiàng)說明

     

/proc/sys/net/core/rmem_default

   

"110592"

定義默認(rèn)的接收窗口大?。粚?duì)于更大的 BDP 來說,這個(gè)大小也應(yīng)該更大。

/proc/sys/net/core/rmem_max

"110592"

定義接收窗口的***大?。粚?duì)于更大的 BDP 來說,這個(gè)大小也應(yīng)該更大。

/proc/sys/net/core/wmem_default

"110592"

定義默認(rèn)的發(fā)送窗口大??;對(duì)于更大的 BDP 來說,這個(gè)大小也應(yīng)該更大。

/proc/sys/net/core/wmem_max

"110592"

定義發(fā)送窗口的***大??;對(duì)于更大的 BDP 來說,這個(gè)大小也應(yīng)該更大。

/proc/sys/net/ipv4/tcp_window_scaling

 
 

"1"

啟用 RFC 1323 定義的 window scaling;要支持超過 64KB 的窗口,必須啟用該值。

/proc/sys/net/ipv4/tcp_sack

"1"

啟用有選擇的應(yīng)答(Selective Acknowledgment),這可以通過有選擇地應(yīng)答亂序接收到的報(bào)文來提高性能(這樣可以讓發(fā)送者只發(fā)送丟失的報(bào)文段);(對(duì)于廣域網(wǎng)通信來說)這個(gè)選項(xiàng)應(yīng)該啟用,但是這會(huì)增加對(duì) CPU 的占用。

/proc/sys/net/ipv4/tcp_fack

"1"

啟用轉(zhuǎn)發(fā)應(yīng)答(Forward Acknowledgment),這可以進(jìn)行有選擇應(yīng)答(SACK)從而減少擁塞情況的發(fā)生;這個(gè)選項(xiàng)也應(yīng)該啟用。

/proc/sys/net/ipv4/tcp_timestamps

"1"

以一種比重發(fā)超時(shí)更精確的方法(請(qǐng)參閱 RFC 1323)來啟用對(duì) RTT 的計(jì)算;為了實(shí)現(xiàn)更好的性能應(yīng)該啟用這個(gè)選項(xiàng)。

/proc/sys/net/ipv4/tcp_mem

"24576 32768 49152"

確定 TCP 棧應(yīng)該如何反映內(nèi)存使用;每個(gè)值的單位都是內(nèi)存頁(通常是 4KB)。***個(gè)值是內(nèi)存使用的下限。第二個(gè)值是內(nèi)存壓力模式開始對(duì)緩沖區(qū)使用應(yīng)用壓力的上限。第三個(gè)值是內(nèi)存上限。在這個(gè)層次上可以將報(bào)文丟棄,從而減少對(duì)內(nèi)存的使用。對(duì)于較大的 BDP 可以增大這些值(但是要記住,其單位是內(nèi)存頁,而不是字節(jié))。

/proc/sys/net/ipv4/tcp_wmem

"4096 16384 131072"

為自動(dòng)調(diào)優(yōu)定義每個(gè) socket 使用的內(nèi)存。***個(gè)值是為 socket 的發(fā)送緩沖區(qū)分配的最少字節(jié)數(shù)。第二個(gè)值是默認(rèn)值(該值會(huì)被 wmem_default 覆蓋),緩沖區(qū)在系統(tǒng)負(fù)載不重的情況下可以增長(zhǎng)到這個(gè)值。第三個(gè)值是發(fā)送緩沖區(qū)空間的***字節(jié)數(shù)(該值會(huì)被 wmem_max 覆蓋)。

/proc/sys/net/ipv4/tcp_rmem

"4096 87380 174760"

tcp_wmem 類似,不過它表示的是為自動(dòng)調(diào)優(yōu)所使用的接收緩沖區(qū)的值。

/proc/sys/net/ipv4/tcp_low_latency

"0"

允許 TCP/IP 棧適應(yīng)在高吞吐量情況下低延時(shí)的情況;這個(gè)選項(xiàng)應(yīng)該禁用。

   與任何調(diào)優(yōu)努力一樣,***的方法實(shí)際上就是不斷進(jìn)行實(shí)驗(yàn)。您的應(yīng)用程序的行為、處理器的速度以及可用內(nèi)存的多少都會(huì)影響到這些參數(shù)影響性能的方式。在某些情況中,您認(rèn)為有益的操作可能恰恰是有害的(反之亦然)。因此,我們需要逐一試驗(yàn)各個(gè)選項(xiàng),然后檢查每個(gè)選項(xiàng)的結(jié)果。換而言之,我們需要相信自己的經(jīng)驗(yàn),但是對(duì)每次修改都要進(jìn)行驗(yàn)證。

  提示:下面介紹一個(gè)有關(guān)***性配置的問題。注意,如果您重新啟動(dòng)了 GNU/Linux 系統(tǒng),那么您所需要的任何可調(diào)節(jié)的內(nèi)核參數(shù)都會(huì)恢復(fù)成默認(rèn)值。為了將您所設(shè)置的值作為這些參數(shù)的默認(rèn)值,可以使用 /etc/sysctl.conf 在系統(tǒng)啟動(dòng)時(shí)將這些參數(shù)配置成您所設(shè)置的值。

【編輯推薦】

  1. 2.1.3 Socket服務(wù)器
  2. TCP Socket之linux實(shí)現(xiàn)
  3. Linux操作系統(tǒng)下Socket編程地址結(jié)構(gòu)介紹
  4. 16.5.4 socket編程實(shí)例(2)
  5. 16.5.4 socket編程實(shí)例(1)
責(zé)任編輯:zhaolei 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-01-18 11:50:51

Linuxsocket性能

2011-01-18 11:37:59

Linuxsocket性能

2011-01-18 10:35:02

Linuxsocket性能

2010-06-13 14:54:40

TCP IP協(xié)議棧linux

2021-07-09 08:55:23

LinuxTCPIP

2024-10-18 09:05:42

2010-01-22 11:06:03

GNUkFreeBSDLinux

2019-09-30 09:28:26

LinuxTCPIP

2010-01-21 11:19:44

TCP Socketlinux

2019-09-18 08:53:55

2020-01-06 11:22:06

TCPLinux內(nèi)核

2017-02-05 17:33:59

前端優(yōu)化Web性能

2013-08-16 10:31:55

2011-03-11 15:52:57

LAMP優(yōu)化

2020-10-10 07:00:16

LinuxSocketTCP

2021-06-10 09:52:33

LinuxTCPAccept

2019-10-22 08:41:09

TCPIPLinux

2019-07-01 08:51:49

TCPIPLinux

2010-09-08 15:11:36

TCP IP協(xié)議棧

2014-10-15 09:14:24

IP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)