#Controls source route verification
net.ipv4.conf.default.rp_filter = 1 #啟用源路由核查功能
net.ipv4.ip_nonlocal_bind = 1 #允許非本地IP地址socket監聽
net.ipv4.ip_forward = 1 #開啟IPV4轉發
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0 #禁用所有IP源路由
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0 #關閉sysrq組合鍵
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1 #控制core文件的文件名是否添加pid作為擴展
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1 #與性能無關。用於解決TCP的SYN攻擊
# Controls the default maxmimum size of a mesage queue, in bytes
kernel.msgmnb = 65536 #每個消息隊列的大小限制(單位:字節)
# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536 #整個系統最大消息隊列數量限制
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736 #單個共享內存段大小(單位:字節)
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296 #所有內存大小(單位:頁)
# TCP kernel paramater
net.ipv4.tcp_mem = 786432 1048576 1572864 #1st低於此值,TCP沒有內存壓力,2nd進入內存壓力階段,3rd TCP拒絕分配socket(單位:內存頁)
net.ipv4.tcp_rmem = 4096 87380 4194304 #定義TCP接受socket請求緩存的內存最小值、默認值、較大值
net.ipv4.tcp_wmem = 4096 16384 4194304 #定義TCP發送緩存的最小值、默認值、最大值
net.ipv4.tcp_window_scaling = 1 #支持更大的TCP窗口,如果TCP窗口最大超過65535(64K),必須設置該數值為1
net.ipv4.tcp_sack = 1 #開啟有選擇應答
# socket buffer
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 #當網卡接收數據包的速度大於內核處理速度時,會有一個隊列保存這些數據。這個參數表示該隊列的較大值
net.core.somaxconn = 20480 #默認值128,這個參數用於調節系統同時發起TCP連接數,在高並發的請求中,默認值可能會導致連接超時或者重傳,因此需要結合高並發請求數來調整此值
net.core.optmem_max = 81920
# TCP conn
net.ipv4.tcp_max_syn_backlog = 262144 #這個參數表示TCP三次握手建立階段接受SYN請求隊列的較大長度,默認1024,將其設置大一些可使出現nginx繁忙來不及accept新連接,linux不至於丟失客戶端發起的連接請求
net.ipv4.tcp_retries1 = 3 #該變量設置放棄回應一個tcp連接請求前,需要進行多少次重試。
net.ipv4.tcp_retries2 = 15 #控制內核向已經建立連接的遠程主機重新發送數據的次數,低值可以更早的檢測到與遠程主機失效的連接,因此服務器可以更快的釋放該連接,可以修改為5
net.ipv4.tcp_tw_recycle = 0 #快速回收TIME_WAIT狀態,用於大量TIME_OUT場景
# tcp conn reuse
net.ipv4.tcp_timestamps = 0 #是否開啟數據包時間戳
net.ipv4.tcp_tw_reuse = 0 #端口復用,參數值設置為1,表示允許將TIME_WAIT的狀態socket重新用於新的TCP連接,這對於服務器來說意義重大,因為總是有大量TIME_WAIT狀態的連接存在
net.ipv4.tcp_fin_timeout = 1 #當服務器主動關閉連接時,socket保持在FIN_WAIT_2狀態的較大時間
net.ipv4.tcp_max_tw_buckets = 20000 #表示操作系統允許TIME_WAIT套接字數量的最大值,如果超過此值,TIME_WAIT套接字將立刻被清除並打印警告信息默認為8000,過多的TIME_WAIT套接字會使web服務變慢
net.ipv4.tcp_max_orphans = 3276800 #選項用於設置系統中最多有多少個TCP套接字不被關聯到任何一個用戶句柄上。如果超過這個數字,孤立連接數將立即被復位並輸出警告信息。這個限制只是為了防止簡單DOS攻擊不用過分依靠這個限制,甚至認為減小這個值 ,更多的情況是增加這個值
net.ipv4.tcp_synack_retries = 1 #表示應用程序進行connect()系統調用時,在對方不返回SYN + ACK的情況下(也就是超時的情況下),第一次發送之后,內核最多重試幾次發送SYN包;
net.ipv4.tcp_syncookies = 1 #開啟SYN Cookies,當出現SYN等待隊列溢出時,啟用cookies來處理
# keepalive conn
net.ipv4.tcp_keepalive_time = 300 #當keepalive啟動時,TCP發送keepalive消息的頻度,默認2小時,將其設置為5分鍾,可更快的清理無效連接
net.ipv4.tcp_keepalive_intvl = 30 #當探測沒有確認時,重新發送探測的頻度。缺省是75秒。
net.ipv4.tcp_keepalive_probes = 3 #在認定連接失效之前,發送多少個TCP的keepalive探測包。缺省值是9。這個值乘以tcp_keepalive_intvl之后決定了,一個連接發送了keepalive之后可以有多少時間沒有回應
net.ipv4.ip_local_port_range = 10001 65000 #定義UDP和TCP連接的本地端口的取值范圍
# swap
vm.overcommit_memory = 0 #0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,並把錯誤返回給應用進程。1, 表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。2, 表示內核允許分配超過所有物理內存和交換空間總和的內存
vm.swappiness = 10 #數值可設置范圍在0到100之間。 低參數值會讓內核盡量少用交換,更高參數值會使內核更多的去使用交換空間。默認值為60。當系統存在足夠內存時,推薦設置為該值以提高性能。
fs.file-max = 1000000 # 表示單個進程可以打開的句柄數
net.core.netdev_max_backlog = 32768
net.core.rmem_default = 8388608
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.ip_local_port_range = 5000 65000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_reuse = 1
vm.max_map_count = 655360
vm.overcommit_memory = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv6.conf.all.disable_ipv6 = 1
kernel.unknown_nmi_panic = 0
kernel.sysrq = 1
fs.file-max = 1000000
vm.swappiness = 10
fs.inotify.max_user_watches = 10000000
net.core.wmem_max = 327679
net.core.rmem_max = 327679
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
fs.inotify.max_queued_events = 327679
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.neigh.default.gc_thresh1 = 2048
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh3 = 8192
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30
net.nf_conntrack_max = 1000000
net.netfilter.nf_conntrack_max = 1000000