Linux基礎優化

Linux系統出現性能瓶頸(IO/CPU/MEM)時如其大費周章進行軟件調優,還不如從硬件方面來解決更合理,軟件方面的調優性能增加是微乎其微的。因爲在系統部署初期已經對參數進行了合理的設置。
Linux系統軟件方面調優也就是讓參數設置更加合理,從而達到性能上提高。

一.Linux系統基礎優化

當Linux服務器完成安裝,我們需要進行一些合理的設置

  • 不使用root用戶登錄系統,添加普通用戶,通過sudo授權管理,降低root用戶爲人操作風險
  • 配置yum源爲國內源,如阿里源,163網易源
  • 配置定時更新系統時間,防止因系統錯誤導致業務故障
  • 更改sshd服務的默認端口,禁止root用戶遠程登錄系統
  • 關閉iptable,selinux服務,如果服務器有公網ip,需要配置iptables服務
  • 禁用不必要的開機啓動,自動開機服務有:network,rsyslog,sshd,crond
  • 更改系統字符集支持中文,建議還是使用英文防止亂碼
  • 調整系統文件描述符
  • 使用chart命令鎖定系統關鍵文件:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow
  • 去除系統與內核登錄頁面的顯示,即清空/etc/issue
  • 調整系統常見內核參數,主要是與TCP相關參數

二.常見內核參數優化

在看這些參數前需要理解TCP/ip三次握手與四次揮手原理與過程,這樣有助於理解這些參數

#對於本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間
net.ipv4.tcp_fin_timeout = 2

#表示是否允許將處於TIME-WAIT狀態的socket重新用於新的TCP連接,(這個對快速重啓動某些服務,而啓動後提示端口已經被使用的情形非常有幫助)
net.ipv4.tcp_tw_reuse = 1

#打開快速 TIME-WAIT sockets 回收
net.ipv4.tcp_tw_recycle = 1

#當出現syn等候隊列出現溢出時象對方發送syncookies。目的是爲了防止syn flood***。
net.ipv4.tcp_syncookies = 1

#TCP發送keepalive探測消息的間隔時間(秒),用於確認TCP連接是否有效。防止兩邊建立連接但不發送數據的***。
net.ipv4.tcp_keepalive_time = 600

#表示用於向外連接的端口範圍
net.ipv4.ip_local_port_range = 4000 65000

#對於那些依然還未獲得客戶端確認的(sync)連接請求﹐需要保存在隊列中最大數目。對於超過 128Mb 內存的系統﹐默認值是 1024
net.ipv4.tcp_max_syn_backlog = 16384

#系統在同時所處理的最大timewait sockets數目
net.ipv4.tcp_max_tw_buckets = 36000

#路由緩存刷新頻率, 當一個路由失敗後多長時間跳到另一個,默認是300
net.ipv4.route.gc_timeout = 100  

#對於一個新建連接,內核要發送多少個 SYN 連接請求才決定放棄。
net.ipv4.tcp_syn_retries = 1

#對於遠端的連接請求SYN,內核會發送SYN +ACK數據報,以確認收到上一個 SYN連接請求包。這是所謂的三次握手( threeway handshake)機制的第二個步驟。這裏決定內內核在放棄連接之前所送出的 SYN+ACK 數目。
net.ipv4.tcp_synack_retries = 1

#用來限制監聽(LISTEN)隊列最大數據包的數量,超過這個數量就會導致鏈接超時或者觸發重傳機制。
net.core.somaxconn = 16384

#每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目
net.core.netdev_max_backlog = 16384

#系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量﹐那麼不屬於任何進程的連接會被立即reset,並同時顯示警告信息。
net.ipv4.tcp_max_orphans = 16384

對於參數的相關英文解釋可以看幫忙文檔man tcp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章