linux優化TCP教程

最近國內的網絡形式越來越嚴峻,在日益高築的圍牆之下,掌握一門穿牆之術越來越成爲需要。相對於 V** 而已, SS更爲輕量級,安裝配置過程極其簡單。而客戶端也可以在windows、mac、iOS和android上輕鬆運行,被人們所深深喜愛。

有部分朋友買的是基於openVZ架構的VPS服務器(多數VPS服務商超售現象頻繁),續筆記在這裏還是建議有條件的朋友去購買KVM架構的VPS服務器,優化提升空間更高。下面我們將針對OpenVZ和KVM兩種不同的架構提供具體的SS服務加速及優化方法。

當然如果不想那麼麻煩的去搭建和優化服務器,推薦去追樂網直接購買套餐使用,不用等待即買即用

OpenVZ 架構

OpenVZ的代表是BandwagonHost搬瓦工。受限於不能修改內核,所以優化方式有限。對於丟包嚴重的情況,最有效的方法是安裝net-speeder。 但net-speeder的工作方式爲無腦雙倍發包,會導致有效數據減半,VPS流量翻倍。如非丟包嚴重,使用以後會導致實際速度更慢。所以非迫不得已,強烈不建議使用!

  • 有效數據減半:例如寬帶跑到10Mbps下行,因爲是雙份同樣的數據,無丟包情況下其實只有5Mbps的有效數據。

  • VPS流量翻倍:VPS流量會同時計算上下行流量,番Q1G流量,其實等於使用了2G流量,用了net-speeder雙倍發包後,無丟包情況下等於使用3G流量,丟包嚴重的情況下會更高。

使用net_speeder給VPS加速

net-speeder 安裝

1

2

3

4

 

wget https://coding.net/u/njzhenghao/p/download/git/raw/master/net_speeder-installer.sh

bash net_speeder-installer.sh

 

全端口加速

1

2

3

 

nohup /usr/local/net_speeder/net_speeder venet0 "ip" >/dev/null 2>&1 &

 

加入自啓動

1

2

3

 

echo 'nohup /usr/local/net_speeder/net_speeder venet0 "ip" >/dev/null 2>&1 & ' >>/etc/rc.local

 

 

KVM-XEN 架構

KVM、XEN可以通過TCP優化和安裝銳速破解版來進行提速。怎麼查看自己的VPS採用的是不是KVM技術?輸入以下代碼即知:

1

2

3

4

 

apt-get install virt-what

virt-what

 


一、TCP優化

1.修改文件句柄數限制

修改/etc/security/limits.conf文件

1

2

3

 

vi /etc/security/limits.conf

 

加入

1

2

3

4

 

* soft nofile 51200

* hard nofile 1024000

 

Centos用戶:執行下面命令,然後重啓服務器執行ulimit -n,查詢返回51200即可。

1

2

3

 

ulimit -n 51200

 

Ubuntu用戶:還需要編輯/etc/pam.d/common-session,加入一行

1

2

3

 

session required pam_limits.so

 

編輯/etc/profile,加入一行

1

2

3

 

ulimit -SHn 51200

 

然後重啓服務器執行ulimit -n,查詢返回51200即可。

 

2.調整內核參數

修改/etc/sysctl.conf文件,用以下內容替換

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

fs.file-max = 51200

net.core.rmem_max = 67108864

net.core.wmem_max = 67108864

net.core.netdev_max_backlog = 250000

net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.ip_local_port_range = 10000 65000

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.tcp_rmem = 4096 87380 67108864

net.ipv4.tcp_wmem = 4096 65536 67108864

net.ipv4.tcp_mtu_probing = 1

net.ipv4.tcp_congestion_control = hybla

 

 

注意事項:

不建議開啓 net.ipv4.tcp_tw_recycle,故設置爲 net.ipv4.tcp_tw_recycle = 0;

而TCP擁塞算法的問題,你可以執行命令:

1

2

3

 

sysctl net.ipv4.tcp_available_congestion_control

 

查看本機提供的擁塞算法控制模塊。如果沒有文中提到的htcp,hybla 算法,你可以嘗試通過modprobe啓用模塊:

1

2

3

4

 

/sbin/modprobe tcp_htcp

/sbin/modprobe tcp_hybla

 

保存修改後執行 sysctl -p 使配置生效。

1

2

3

 

sysctl -p /etc/sysctl.conf

 

 

二、銳速破解版

銳速破解版不支持 OpenVZ 的小雞,如果你的內核不對,是Centos的話請食用《CentOS系統更換內核教程,更好的適配銳速破解版》,如果嫌麻煩又不想花太多錢,你可以購買我們的SS賬號,會有適合您的套餐供您選擇。>>點擊購買

安裝方法:

1

2

3

 

wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh && bash serverspeeder-all.sh

 

安裝過程中依次輸入以下命令:

1

2

3

4

5

6

7

8

 

eth0

1000000

1000000

0

y

y

 

銳速優化:

打開/serverspeeder/etc目錄中的config文件,編輯如下內容:

1

2

3

4

5

6

 

rsc="1"

gso="1"

maxmode="1"

advinacc="1"

 

重啓銳速服務完成優化:

1

2

3

 

service serverSpeeder restart

 

銳速優化全解:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

 

1 accif="eth*"

加速接口,eth*一般爲服務器上對外提供服務的網絡接口,例如 eth0 eth1,一般通過 ifconfig 命令可以看到,可以同時設定多個接口作爲加速接口(接口之間用空格分開),如 accif="eth0 eth1",默認爲"eth0"

 

2acc="1"

TCP 加速開關,設爲 1 表示開啓 LotServer  TCP 加速功能,設爲 0 表示關閉LotServer  TCP加速功能,默認爲 1

 

3advacc="1"

高級加速開關,設爲 1 表示開啓,設爲 0 表示關閉,開啓此功能可以得到更好的加速效果,但有可能會造成有效數據率下降,默認爲 1

 

4advinacc="0"

高級入向加速開關,設爲 1 表示開啓,設爲 0 表示關閉,開啓此功能可以得到更好的流入方向流量加速效果。

 

5wankbps="1000000"

加速接口上行帶寬,指的是從服務器流出到 Internet 的最大帶寬,單位爲 Kbps,例如服務器所連接的 Internet 帶寬爲 1G,則設置爲 1000000,默認爲 1000000

 

6waninkbps="1000000"

加速接口下行帶寬,指的是從 Internet 流入服務器的最大帶寬,單位爲 Kbps,例如服務器所連接的Internet 帶寬爲 1G,則設置爲 1000000,默認爲 1000000wankbps  waninkbps 的設置一般與實際帶寬相同最理想,如果無法確定實際帶寬,一般設置爲網卡的最大吞吐能力即可,例如網卡爲千兆全雙工網卡,則 wankbps waninkbps 都設置爲 1000000,當設置過小時,例如實際帶寬有100Mbps,但 wankbps  waninkbps 設置爲10Mbps,則數據流量會被限制在 10Mbps 以內,此時會降低服務器的吞吐。

 

7csvmode="0" highcsv="0"

csvmode 擁塞控制模式開關,設爲 1 表示開啓,設爲 0 表示關閉,開啓 tcp 加速後,在某些丟包較大的網絡中可能會造成有效數據率下降的問題,此時開啓擁塞控制模式,可以有效避免該問題,但開啓此選項時,可能加速效果也會下降,默認爲 0csvmode="1" highcsv="0"時,爲普通擁塞控制模式,對擁塞具有一定控制的同時對加速效果的影響較小,csvmode="1" highcsv="1"時,爲高級擁塞控制模式,可以更好的控制擁塞但是相比於普通擁塞控制模式對加速效果的影響較大。

 

8subnetAcc="0"

局域網加速開關,設爲 1 表示開啓,設爲 0 表示關閉,不開啓時對於同一局域網內的連接不會加速,開啓後對同一網段的 TCP 連接也進行加速。

 

9maxmode="0"

最大傳輸模式,設爲 1 表示開啓,設爲 0 表示關閉,開啓後會進一步提高加速效果,但是可能會降低有效數據率。

 

10maxTxEffectiveMS="0"

最大傳輸模式生效時間,用於控制最大傳輸模式對每一個連接的生效時間,設爲0 表示從連接建立到連接結束,都採用最大傳輸模式傳輸,單位爲 ms1000  1s

 

11pcapEnable="0"

抓包開關,設爲 1 表示開啓,設爲 0 表示關閉,開啓此功能後會抓取經過加速引擎處理的數據包,在/appex/log 目錄下生成抓包文件。

 

12bypassOverFlows="1"

流量 bypass 開關,設爲 1 表示開啓,設爲 0 表示關閉,開啓此功能後當服務器的連接數超過引擎設定後會對超過的連接的流量 bypass,否則會無法新建連接。

 

13initialCwndWan="44"

初始 TCP 發送窗口能夠發送的數據包的數量,該值設置的高會獲得更好的加速效果,但是可能會造成網絡的擁塞。

 

14l2wQLimit="256 2048"

 LAN  WAN 加速引擎在緩衝池充滿和空閒時分別能夠緩存的數據包隊列的長度的上限,該值設置的高會獲得更好的加速效果,但是會消耗更多的內存。

 

15w2lQLimit="256 2048"

 WAN  LAN 加速引擎在緩衝池充滿和空閒時分別能夠緩存的數據包隊列的長度的上限,該值設置的高會獲得更好的加速效果,但是會消耗更多的內存。

 

16shrinkPacket="0"

slab 緩存縮減開關,設爲 1 表示開啓,設爲 0 表示關閉,當服務器內存消耗很高時可以將該值設定爲 1,這樣會降低內存的消耗。

 

17retranWaitListMS="32"

重傳等待時間,當服務器沒有收到 ack 或者丟包產生之後客戶端重複 ack 時間達到 32ms,服務器重傳數據,默認爲 32ms

 

18halfCwndMinSRtt="500"  halfCwndLo***ateShift="3"

以上兩個值用於判斷網絡擁塞,分別爲延時和丟包率,丟包率默認值爲 3,即1/2^3,當擁塞產生時,退出第三代 Learning-based TCP 算法,採用類似傳統 TCP 的算法。

 

19#byte cache

byteCache="0"

httpComp="1"

byteCacheMemory="250" #MB

byteCacheDisk="0" #MB

diskDev="/dev/sda2"

以上爲雙邊緩存的設置,當前只有部分版本支持該功能。分別是緩存開關,數據壓縮開關,內存大小,硬盤大小,指定硬盤位置。

 

20shaperEnable="1"

流量整形開關,配合上行和下行帶寬設置開啓,設爲 1 表示開啓,設爲 0 表示關閉,開啓此功能,會採用 wankbps 以及 waninkbps 設置的帶寬大小運行,關閉此功能,會根據實時傳輸自動測算帶寬大小。

 

21tcpOnly="1"

設爲 1 表示開啓,設爲 0 表示關閉,開啓此功能,即只處理 TCP 流量,關閉此功能,也處理除 TCP以外的流量(不會對非 TCP 流量加速),一般用於配置策略對非 TCP 數據丟棄時。

 

22SmBurstMS="15"

引擎允許的最大突發時間,設爲 0,則關閉,該值越大,數據包發送量越大,當前推薦默認爲 15

 

23rsc="0"

網卡接收端合併開關,設爲 1 表示開啓,設爲 0 表示關閉,在有些較新的網卡驅動中,帶有 RSC 算法的,需要打開該功能。

 

24gso="0"

GSO 開關,設爲 1 表示開啓,設爲 0 表示關閉,當網卡需要開啓 gso 功能時,開啓此功能,LotServer變爲支持gso的模式,關閉此功能,如果網卡開啓gsoLotServer會關閉網卡的 gso 功能。

 

25lanSegment=""

 LotServer 不是 TCP 連接的最終節點並且採用單臂模式部署時,如果 LotServer和服務器之間網絡環境很好,不需要加速,將此參數的值設爲 Lan 一側的子網網段(參數的值爲子網網段的十六進制表示加子網掩碼,例:ip  172.33.0.0/16lanSegment="AC210000/16"),則 LotServer 和服務器之間不進行加速,可以節省LotServer 使用的資源並獲得更好的加速效果。如果不設置此參數,則LotServer 會對所有經過的 TCP 連接進行加速。(注:如果參數轉換爲十六進制後,第一位數字爲 0時,需要省略,不然無法正常寫入配置。例如:參數十六進制值爲:0C210000/16,那麼lanSegment="C210000/16"。)

 

26configTimeout="30"

設置開啓 LotServer 時,寫入配置所需要的時間。當引擎的數目很多時需要寫入配置的時間較長,默認爲 30s

 

27engineNum="0"

LotServer 啓動的加速引擎的的個數,在多處理器()的系統環境下,啓用多個加速引擎可以使網絡流量的負載在多個處理器()之間做均衡分配,從而幫助優化系統CPU 資源的利用,啓用多個加速引擎時,引擎序號從 0 開始,分別爲 engine0, engine1,engine2,等等,每個引擎的負載對應交給相同序號的處理器來處理,即,engine0 使用 cpu0, engine1 使用 cpu1 等,engineNum 默認爲 0,表示啓用的加速引擎個數與系統的處理器個數相同,64bit 架構下,當實際的 engineNum 參數大於 4時,檢查內存:當總內存減去 engine 佔用內存剩餘數小於 2G 時,提示用戶一個warningLotServer Warning: $CPUNUM engines will be launched according to the config file.Your system total RAM is $memTotal(KB), which might be insufficient to run all theengines without performance penalty under extreme network conditions. 

 

28shortRttMS="10"

白名單開關,打開後 LotServer 將不對 RTT 小於 shortRttMS 的連接加速,節約系統資源,提高性能,設置爲 0 時表示關閉此功能,LotServer 會加速所有的連接,設置爲其他值時,例如 10,則表示當第一次建立連接時,Lotserver 會測量所有的新建連接的 RTT,但是不對其進行加速,如果 RTT大於 10msLotServer 會從第二次建立連接開始對其加速,如果 RTT 小於 10msLotServer 則一直不會對其加速。默認值 10ms。重啓 LotServer 後,原來記錄的每個連接的 RTT 會被清除,重新開始記錄。LotServer 使用五元組判斷是否爲同一連接,五元組包括:源 ip,目的 ip,源端口,目的端口和協議。

 

29apxexe=" /appex/bin/acce-***"

LotServer 模塊文件的路徑。

 

30apxlic="/appex/etc/apx-***.lic"

LotServer 授權文件的路徑。

 

 

卸載方法:

1

2

3

 

chattr -i /serverspeeder/etc/apx* && /serverspeeder/bin/serverSpeeder.sh uninstall -f


 

----------------------------------------------

本文章來自肖俊傑的博客

http://blog.51cto.com/13504390

QQ :122501162

郵箱:[email protected]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章