天天看點

centos7 核心參數優化

cat /etc/sysctl.conf

#CTCDN系統優化參數

#關閉ipv6

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

# 避免放大攻擊

net.ipv4.icmp_echo_ignore_broadcasts = 1

# 開啟惡意icmp錯誤消息保護

net.ipv4.icmp_ignore_bogus_error_responses = 1

#關閉路由轉發

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

#開啟反向路徑過濾

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

#處理無源路由的包

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

#關閉sysrq功能

kernel.sysrq = 0

#core檔案名中添加pid作為擴充名

kernel.core_uses_pid = 1

# 開啟SYN洪水攻擊保護

net.ipv4.tcp_syncookies = 1

#修改消息隊列長度

kernel.msgmnb = 65536

kernel.msgmax = 65536

#設定最大記憶體共享段大小bytes

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

#timewait的數量,預設180000

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096        87380   4194304

net.ipv4.tcp_wmem = 4096        16384   4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

#每個網絡接口接收資料包的速率比核心處理這些包的速率快時,允許送到隊列的資料包的最大數目

net.core.netdev_max_backlog = 262144

#限制僅僅是為了防止簡單的DoS 攻擊

net.ipv4.tcp_max_orphans = 3276800

#未收到用戶端确認資訊的連接配接請求的最大值

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

#核心放棄建立連接配接之前發送SYNACK 包的數量

net.ipv4.tcp_synack_retries = 1

#核心放棄建立連接配接之前發送SYN 包的數量

net.ipv4.tcp_syn_retries = 1

#啟用timewait 快速回收

net.ipv4.tcp_tw_recycle = 1

#開啟重用。允許将TIME-WAIT sockets 重新用于新的TCP 連接配接

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1

#當keepalive 起用的時候,TCP 發送keepalive 消息的頻度。預設是2 小時

net.ipv4.tcp_keepalive_time = 30

#允許系統打開的端口範圍

net.ipv4.ip_local_port_range = 1024    65000

#修改防火牆表大小,預設65536

Ulimit –n 265535

在Linux平台上,無論編寫用戶端程式還是服務端程式,在進行高并發TCP連接配接處理時,最高的并發數量都要受到系統對使用者單一程序同時可打開檔案數量的限制(這是因為系統為每個TCP連接配接都要建立一個socket句柄,每個socket句柄同時也是一個檔案句柄),這個數字可以設的更大。

此指令是臨時更改,也可以通過修改檔案/etc/security/limits.conf

fs.file-max = 265535

系統級别的能夠打開的檔案句柄的數量,ulimit 是程序級别的

net.ipv4.ip_conntrack_max=265535

系統允許的最大跟蹤連接配接條目。在/etc/sysctl.conf檔案中增加此屬性,并運作>/sbin/sysctl.conf –p

另外在sysctl -p的時候A報error: 'net.ipv4.ip_conntrack_max' is an unknown key ,通過以下指令修正:

modprobe ip_conntrack

echo "modprobe ip_conntrack" >> /etc/rc.local

#net.netfilter.nf_conntrack_max=655350

#net.netfilter.nf_conntrack_tcp_timeout_established=1200

 # 確定無人能修改路由表

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0

net.nf_conntrack_max = 6553600

把參數添加到/etc/sysctl.conf中,然後執行sysctl -p使參數生效,永久生效

  看下其解析:

  對于一個TCP連接配接,Server與Client需要通過三次握手來建立網絡連接配接.當三次握手成功後,

  我們可以看到端口的狀态由LISTEN轉變為ESTABLISHED,接着這條鍊路上就可以開始傳送資料了.

  每一個處于監聽(Listen)狀态的端口,都有自己的監聽隊列.監聽隊列的長度,與如下兩方面有關:

  - somaxconn參數.

  - 使用該端口的程式中listen()函數.

  1. 關于somaxconn參數:

  定義了系統中每一個端口最大的監聽隊列的長度,這是個全局的參數,預設值為128,具體資訊為:

  Purpose:

  Specifies the maximum listen backlog.

  Values:

  Default: 128 connections

  Range: 0 to MAXSHORT

  Type: Connect

  Diagnosis:

  N/A

  Tuning

  Increase this parameter on busy Web servers to handle peak connection rates.

  看下FREEBSD的解析:

  限制了接收新 TCP 連接配接偵聽隊列的大小。對于一個經常處理新連接配接的高負載 web服務環境來說,預設的 128 太小了。大多數環境這個值建議增加到 1024 或者更多。 服務程序會自己限制偵聽隊列的大小(例如 sendmail(8) 或者 Apache),常常在它們的配置檔案中有設定隊列大小的選項。大的偵聽隊列對防止拒絕服務 DoS 攻擊也會有所幫助。

   我們可以通過,

  來修改這個參數。

修改swappiness

Linux核心參數vm.swappiness,值的範圍為0~100,表示系統什麼時候開始進行實體記憶體與虛拟記憶體的交換。舉個例子,系統總記憶體為64G,vm.swappiness為60,表示在系統記憶體使用64*0.4=25.6G的時候開始實體記憶體與虛拟記憶體的交換,這個動作勢必會影響系統的性能。是以,Cloudera建議把這個值修改為1~10,最好設定為1。

在/etc/sysctl.conf添加vm.swappiness = 1

禁止透明大頁

ORACLE官方不建議我們使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 時的開啟透明大頁(Transparent HugePages ), 因為透明大頁(Transparent HugePages ) 存在一些問題:

        1.在RAC環境下 透明大頁(Transparent HugePages )會導緻異常節點重新開機,和性能問題;

        2.在單機環境中,透明大頁(Transparent HugePages ) 也會導緻一些異常的性能問題;

首先檢視透明大頁是否啟用,[always] never表示已啟用,always [never]表示已禁用

[root@n12 ~]# cat /sys/kernel/mm/redhat_transparent_hugepage/defrag

[always] madvise never

如果是啟用狀态,修改/etc/rc.local檔案并添加echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

<b>避免重新開機系統,可以執行一遍添加指令,就不用重新開機系統生效。</b>

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1836130,如需轉載請自行聯系原作者

繼續閱讀