高併發Linux伺服器的常用配置

2021-06-26 02:23:27 字數 3269 閱讀 6056

檢視linux系統級的最大開啟檔案數限制

cat /proc/sys/fs/file-max

linux系統級硬限制,所有使用者級的開啟檔案數限制都不應超過這個數值

修改使用者程序可開啟檔案數限制

fs.file-max = 999999                                    # 程序可以同時開啟的最大控制代碼數

允許將time-wait sockets重新用於新的tcp連線

net.ipv4.tcp_tw_reuse = 1                             # 重用 time_wait 狀態的 socket

修改tcp連線關閉後等待**的時間

net.ipv4.tcp_fin_timeout = 30                        # socket 保持在 fin_wait_2 狀態的最大時間

time-wait sockets的快速**

net.ipv4.tcp_tw_recycle = 1 表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉。

系統同時保持time_wait套接字的最大數量
net.ipv4.tcp_max_tw_buckets = 5000             # 作業系統允許 time_wait socket 的最大數量

syn等待佇列溢位時,啟用cookies來處理

net.ipv4.tcp_syncookies = 1 表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊,預設為0,表示關閉;

syn佇列的長度

net.ipv4.tcp_max_syn_backlog = 8192 表示syn佇列的長度,預設為1024,加大佇列長度為8192,可以容納更多等待連線的網路連線數。

當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊
net.ipv4.tcp_syncookies = 1                           # 防止 tcp syn 攻擊

net.ipv4.tcp_max_syn.backlog = 1024            # tcp 三次握手建立階段接收 syn 請求佇列的最大長度,預設為 1024

syn表示建立連線,fin表示關閉連線,ack表示響應,psh表示有data資料傳輸,rst表示連線重置

主動關閉方會出現time_wait,被動關閉方會出現close_wait;被動關閉方的close_wait的等待是應用程式自己造成的,和系統沒有關係,通常是被動關閉方沒有呼叫close導致的;time_wait出現後,需要等待2個msl時間才會釋放socket,close_wait出現後需要等待乙個keepalive的時間,關於keepalive的控制主要有3個引數:net.ipv4.tcp_keepalive_intvl(每次探測間隔)、net.ipv4.tcp_keepalive_probes(探測次數)、net.ipv4.tcp_keepalive_time(tcp鏈路上空閒多長時間開始傳送keep_alive),tcp_keepalive_time預設為2小時,因此close_wait後最多有可能需要等待tcp_keepalive_time + tcp_keepalive_intvl * tcp_keepalive_probes

修改網路核心對tcp連線的有關限制net.ipv4.ip_local_port_ tange = 1024 61000    # 定義在 udp和 tcp 連線中本地埠的取值範圍

繼續保持tcp連線時間

net.ipv4.tcp_keepalive_time = 600                 # 當 keepalive 啟用時,tcp 傳送 keepalive 訊息的頻度

net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 32768 262142       # tcp 接收快取的最小值、預設值、最大值

net.ipv4.tcp_wmem = 4096 32768 262142      # tcp 傳送快取的最小值、預設值、最大值

net.ipv4.tcp_mtu_probing=1
net.core.rmem_max = 2097152                      # 核心 socket 接收快取區的最大大小

net.core.wmem_max = 2097152                    # 核心 socket 傳送快取區的最大大小

net.core.netdev_max_backlog = 8096            # 當網絡卡接收資料報的速度大於核心處理的速度時,儲存佇列的最大值

net.core.rmem_default = 262144                   # 核心 socket 接收快取區預設的大小

net.core.wmem_default = 212144                  # 核心 socket 傳送快取區預設的大小

設定tcp擁塞演算法為 hyblanet.ipv4.tcp_congestion_control=hybla

使用支援高併發網路i/o的程式設計技術阻塞i/o

非阻塞i/o

i/o 多路復用

訊號驅動i/o(sigio)

非同步i/o

linux

每個程序的開啟的最大執行緒為1000  

高併發 Linux 伺服器的常用配置

proc sys fs file max fs.file max 999999 程序可以同時開啟的最大控制代碼數 etc sysctl.conf net.ipv4.tcp tw reuse 1 重用 time wait 狀態的 socket net.ipv4.tcp keepalive time 6...

Linux伺服器高併發實踐經歷

作為乙個 離職早的野生程式設計師,業務方面還可以達到忽悠別人的水平,但上公升到效能層面那就是硬傷。真是天上掉餡餅,公司分配了乙個測試效能的任務,真是感覺我的天空星星都亮了。高併發主要限制因素 cpu 網路流量 記憶體 系統配置 用top看cpu利用率,按1檢視每個cpu執行緒的工作情況 這裡面會顯示...

支援高併發的IIS Web伺服器常用設定

適用的iis版本 iis 7.0,iis 7.5,iis 8.0 適用的windows版本 windows server 2008,windows server 2008 r2,windows server 2012 2 net framework相關設定 a 在machine.config中將 p...