高效能linux伺服器核心調優

2022-03-17 03:21:02 字數 1708 閱讀 3453

首先,介紹一下兩個命令

1、dmesg 列印系統資訊。

有很多同學們伺服器出現問題,看了程式日誌,發現沒啥有用資訊,還是毫無解決頭緒,這時候,你就需要檢視系統核心丟擲的異常資訊了,使用dmesg命令,可以檢視系統資訊,dmesg -c 清除已經看過的資訊。

2、sysctl -p 生效核心配置

在我們修改核心引數檔案/etc/sysctl.conf後,需要執行以下sysctl -p 來使引數生效。

使用者請求,最先進入的是nginx伺服器,那我們首先就要對其進行核心調優。

#增大檔案描述符

ulimit -n 65536

echo -ne "

* soft nofile 65536

* hard nofile 65536

" >>/etc/security/limits.conf

#修改系統執行緒限制

echo -ne "

* soft nproc 2048

* hard nproc 4096

" >>/etc/security/limits.conf

nginx伺服器在開啟防火牆時最容易遇到如下情況

執行dmesg命令,檢視系統列印資訊

nf_conntrack: table full, dropping packet

(鏈結追蹤表已滿)

這是相當常見的問題,而且十分嚴重,導致伺服器隨機丟棄請求,你的併發突破不了幾千。

調優方式:

增加或者修改核心引數

vim /etc/sysctl.conf

net.nf_conntrack_max = 655360 (狀態跟蹤表的最大行數,16g的伺服器)

net.netfilter.nf_conntrack_tcp_timeout_established = 1200(設定超時時間)

修改完畢後執行sysctl-p生效命令。

接下來,我們又會面臨time_wait過多的情況。

time_wait過多,會導致系統可用埠的減少,眾所周知,linux隨機埠的可用範圍是32768-65535之間,使用者通過80埠請求進來,伺服器需要開啟乙個隨機埠返回資料給使用者,可用埠的減少必然影響到了使用者的訪問,接下來我們通過調整這兩個核心引數來減少time_wait的數量

降低time_wait最大值,此操作會導致核心告警tcp: time wait bucket table overflow。但是可以提公升併發,節約埠。

net.ipv4.tcp_max_tw_buckets = 8000

增大可用埠範圍,效果顧名思義

net.ipv4.ip_local_port_range = 1024 65000

最後兩個引數我忘記了是什麼意思了,不過也加上吧 :)

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_max_syn_backlog = 81920

至此,你的nginx伺服器可以愉快地跑起來了!

就一條vm.overcommit_memory = 1

為了避免當系統記憶體不足時,系統殺掉記憶體占用最大的程式(往往都是redis qaq)。

不要忘了執行命令生效一下

其他的暫時沒有了,nginx伺服器的核心調優引數可加入初始化指令碼中去。

未完待續~

伺服器常用的核心調優

來自 深入理解nginx模組開發與架構解析 p9 表示程序 例如乙個worker程序 可能同時開啟的最大控制代碼數,直接限制最大併發連線數 fs.file max 999999 1代表允許將狀態為time wait狀態的socket連線重新用於新的連線。對於伺服器來說有意義,因為有大量的time w...

Linux中poll實現高效能伺服器及優缺點總結

include include include include include include include include include define pollfd size 1024 void pd action int index struct pollfd pd pollfd size ...

linux高效能伺服器程式設計

linux高效能伺服器程式設計 當當網 亞馬遜 目錄 第一章 tcp ip協議族 第二章 ip協議族 第三章 tcp協議詳解 第四章 tcp ip通訊案例 訪問internet 第五章 linux網路程式設計基礎api 第六章 高階io函式 第七章 linux伺服器程式規範 第八章 高效能伺服器框架...