檢視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...