高性能linux服務器內核調優


高性能linux服務器內核調優

首先,介紹一下兩個命令
1、dmesg 打印系統信息。
有很多同學們服務器出現問題,看了程序日志,發現沒啥有用信息,還是毫無解決頭緒,這時候,你就需要查看系統內核拋出的異常信息了,使用dmesg命令,可以查看系統信息,dmesg -c 清除已經看過的信息。
2、sysctl -p 生效內核配置
在我們修改內核參數文件/etc/sysctl.conf后,需要執行以下sysctl -p 來使參數生效。

nginx服務器內核調優

用戶請求,最先進入的是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過多的情況。
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服務器可以愉快地跑起來了!

redis服務器內核調優

就一條
vm.overcommit_memory = 1
為了避免當系統內存不足時,系統殺掉內存占用最大的程序(往往都是redis QAQ)。
不要忘了執行命令生效一下

elastic服務器內核調優

增大一個進程可以擁有的VMA(虛擬內存區域)的數量
vm.max_map_count = 262144
降低使用交換分區的優先級(你還要在elastic程序中配置禁用交換分區)
vm.swappiness = 1

其他的暫時沒有了,nginx服務器的內核調優參數可加入初始化腳本中去。

未完待續~

謝土豪


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM