應用系統跑在操作系統上面,系統的性能也關系到應用程序的性能,這里講一些Linux性能關鍵的配置信息。
永久關閉selinux
selinux提高系統安全性,但會造成很多麻煩,一般關閉
[root@localhost ~]# vim /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled,保存后退出,重啟生效
[root@localhost ~]# reboot
設定系統runlevel為3
節約系統資源
[root@localhost ~]# grep 3:initdefault /etc/inittab id:3 [root@localhost ~]# init 3
加大系統文件描述符最大值
vim /etc/security/limits.conf
調整大小
* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
說明:
*代表針對所有用戶
noproc 是代表最大進程數
nofile 是代表最大文件打開數
調整內核參數文件 /etc/syctl.conf
配置網絡參數來提高系統負載能力
如果出現服務器丟包的情況,需要考慮是不是如下配置需要調整
vim /etc/syctl.conf
net.ipv4.tcp_syncookies = 1
表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1
表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。
net.ipv4.tcp_keepalive_time = 1200
表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改為20分鐘。
net.ipv4.ip_local_port_range = 1024 65000
表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192
表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網絡連接數。
net.nf_conntrack_max = 655360
在內核內存中netfilter可以同時處理的“任務”(連接跟蹤條目)
防火墻配置
/etc/syctl 尾部加上如下防火墻相關配置
有可能是sysctl.conf.first文件
開啟重用,回收 socket資源用于新的TCP鏈接
net.ipv4.tcp_tw_reuse=1
開啟回收:
net.ipv4.tcp_tw_recycle=1
網絡鏈接最大值及超時配置
net.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_tcp_timeout_established = 180 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.nf_conntrack_max
決定連接跟蹤表的大小,默認值是65535,可以根據系統內存大小計算一個合理值:> CONNTRACK_MAX = RAMSIZE(in bytes)/16384/(ARCH/32),如32G內存可以設置1048576;
nf_conntrack_buckets
決定存儲conntrack條目的哈希表大小,默認值是nf_conntrack_max的1/4,延續這種計算方式:BUCKETS = > CONNTRACK_MAX/4,如32G內存可以設置262144;
net.netfilter.nf_conntrack_max
最大連接數
net.netfilter.nf_conntrack_tcp_timeout_established
決定ESTABLISHED狀態連接的超時時間,默認值是5天,可以縮短到1小時,即3600。
net.netfilter.nf_conntrack_tcp_timeout_time_wait
決定WAIT狀態連接的超時等待時間
net.netfilter.nf_conntrack_tcp_timeout_close_wait
決定關閉狀態連接的超時等待時間
net.netfilter.nf_conntrack_tcp_timeout_fin_wait
決定WAIT狀態連接的超時等待時間
使以上配置生效
sysctl –p
常見異常
too many open files(打開的文件過多)
程序在Linux系統中常見的錯誤,從字面意思上看就是說程序打開的文件數過多,不過這里的files不單是文件的意思,也包括打開的通訊鏈接(比如socket),正在監聽的端口等等,所以有時候也可以叫做句柄(handle),這個錯誤通常也可以叫做句柄數超出系統限制。
在高并發情況或者程序代碼中沒有正確關閉IO, 并系統限制比較小的情況下,系統在運行一段時間后,程序打開句柄數超過系統限制的時候拋出該異常
解決方法:加大系統文件描述符最大值
連接服務器超時
一般TimeWait進程數過多,原因一般為應用程序沒有正確關閉連接,導致服務器TIME_WAIT進程過多,主動關閉連接導致TIME_WAIT產生。先檢查程序及系統以上配置
解決方法:解決程序問題,檢查系統內核網絡及防火墻內核設置
常見命令
查看機器網絡狀態狀態
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key," ",state[key]}'LAST_ACK
狀態:描述
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
總結
Linux提供了豐富的內核參數供使用者調整,調整得當可以大幅提高服務器的處理能力
鏈接:https://www.cnblogs.com/pgyLang/p/15769748.html
-
Linux
+關注
關注
87文章
11370瀏覽量
211077 -
操作系統
+關注
關注
37文章
6932瀏覽量
124086 -
Linux系統
+關注
關注
4文章
599瀏覽量
27655
原文標題:Linux系統配置優化:實用技巧大揭秘
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
單片機系統配置及接口相關介紹
硬實時RTlinux系統配置
從I2C寫入系統配置內存失敗可能是什么原因?是否按照正確的程序寫入系統配置?
FPGA CPLD可編程邏輯器件的在系統配置方法

通信電源系統配置設計參數

評論