Linux高併發應用型別對系統核心的優化

2021-07-02 01:21:46 字數 2021 閱讀 6934

linux作業系統核心引數優化

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_syncookies = 1

net.core.somaxconn = 262144

net.core.netdev_max_backlog = 262144

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 30

寫到/etc/sysctl.conf 檔案中,並執行

./sbin/sysctl -p

使配置生效。

解釋:net.ipv4.tcp_max_tw_buckets選項用來設定timewait的數量,預設是180 000,這裡設為6000。

net.ipv4.ip_local_port_range選項用來設定允許系統開啟的埠範圍。

net.ipv4.tcp_tw_recycle選項用於設定啟用timewait快速**。

net.ipv4.tcp_tw_reuse選項用於設定開啟重用,允許將time-wait sockets重新用於新的tcp連線。

net.ipv4.tcp_syncookies選項用於設定開啟syn cookies,當出現syn等待佇列溢位時,啟用cookies進行處理。

net.core.somaxconn選項的預設值是128, 這個引數用於調節系統同時發起的tcp連線數,在高併發的請求中,預設的值可能會導致鏈結超時或者重傳,因此,需要結合併發請求數來調節此值。

net.core.netdev_max_backlog選項表示當每個網路介面接收資料報的速率比核心處理這些包的速率快時,允許傳送到佇列的資料報的最大數目。

net.ipv4.tcp_max_orphans選項用於設定系統中最多有多少個tcp套接字不被關聯到任何乙個使用者檔案控制代碼上。如果超過這個數字,孤立連線將立即被復位並列印出警告資訊。這個限制只是為了防止簡單的dos攻擊。不能過分依靠這個限制甚至人為減小這個值,更多的情況下應該增加這個值。

net.ipv4.tcp_max_syn_backlog選項用於記錄那些尚未收到客戶端確認資訊的連線請求的最大值。對於有128mb記憶體的系統而言,此引數的預設值是1024,對小記憶體的系統則是128。

net.ipv4.tcp_synack_retries引數的值決定了核心放棄連線之前傳送syn+ack包的數量。

net.ipv4.tcp_syn_retries選項表示在核心放棄建立連線之前傳送syn包的數量。

net.ipv4.tcp_fin_timeout選項決定了套接字保持在fin-wait-2狀態的時間。預設值是60秒。正確設定這個值非常重要,有時即使乙個負載很小的web伺服器,也會出現大量的死套接字而產生記憶體溢位的風險。

net.ipv4.tcp_syn_retries選項表示在核心放棄建立連線之前傳送syn包的數量。

如果傳送端要求關閉套接字,net.ipv4.tcp_fin_timeout選項決定了套接字保持在fin-wait-2狀態的時間。接收端可以出錯並永遠不關閉連線,甚至意外宕機。

net.ipv4.tcp_fin_timeout的預設值是60秒。需要注意的是,即使乙個負載很小的web伺服器,也會出現因為大量的死套接字而產生記憶體溢位的風險。fin-wait-2的危險性比fin-wait-1要小,因為它最多只能消耗1.5kb的記憶體,但是其生存期長些。

net.ipv4.tcp_keepalive_time選項表示當keepalive啟用的時候,tcp傳送keepalive訊息的頻度。預設值是2(單位是小時)。

併發與高併發(二十)高併發 應用拆分思路

這一章節我們將講解高併發解決方案中的應用拆分思路,也可以稱之為系統拆分。單個伺服器再優化,它的處理都是有上限的,因此我們採用擴容 快取 訊息佇列等對程式進行優化,這些手段都可行,但還不是全部。隨著專案的需求要求越來越多,應用自然會跟著越來越大,因此呢,架構師設計出了特別容易擴充套件的方案,從整體將乙...

對高併發系統架構的認識 1

對於乙個需要處理高併發的系統而言,可以從多個層面去解決這個問題。1 資料庫系統 資料庫系統可以採取集群策略以保證某台資料庫伺服器的宕機不會影響整個系統,並且通過負載均衡策略來降低每一台資料庫伺服器的壓力 當然用一台伺服器應付一般而言沒啥問題,找一台當備機放著應付宕機就行,如果一台應付不了,那麼再加一...

高併發系統設計

高併發系統主要是為了解決在有限的資源下解決最核心的問題,並發現以後可能會出現的問題。高併發原則一般遵守如下幾個設計原則 1.無狀態 指的是應用在處理業務邏輯期間盡量減少鎖的使用 降低網路通訊延遲 無資料持久化操作等,以此來增加應用系統的效能。2.拆分 大而全的系統,可根據實際的訪問量來拆分系統,來實...