數(shù)據(jù)庫服務器性能的優(yōu)化是每個IT團隊關注的焦點之一。除了數(shù)據(jù)庫引擎的優(yōu)化之外,合理調整操作系統(tǒng)的內核參數(shù)也是提高數(shù)據(jù)庫性能的關鍵。本文將解析一些常見的 linux 內核參數(shù),以及它們在數(shù)據(jù)庫服務器優(yōu)化中的作用和建議的值。
一、參數(shù)說明
1、關閉 IPv6 支持
作用:關閉對 IPv6 的支持,減輕系統(tǒng)負擔,提高安全性。
解析:
- net.ipv6.conf.all.disable_ipv6:禁用系統(tǒng)中所有網(wǎng)絡接口的IPv6。
- net.ipv6.conf.default.disable_ipv6:禁用默認網(wǎng)絡接口的IPv6。
說明:大多數(shù)數(shù)據(jù)庫環(huán)境仍主要使用IPv4,關閉IPv6可以減輕系統(tǒng)對IPv6網(wǎng)絡的處理負擔,提高系統(tǒng)安全性。
2、防范放大攻擊
net.ipv4.icmp_echo_ignore_broadcasts = 1
作用:禁用對 ICMP 廣播的回應,防范 ICMP 廣播放大攻擊。
解析:
- net.ipv4.icmp_echo_ignore_broadcasts:設置為1表示不回應 ICMP 廣播。
說明:防范 ICMP 廣播放大攻擊,通過禁用對 ICMP 廣播的回應,減少系統(tǒng)響應對可能的網(wǎng)絡攻擊的風險。
3、啟用惡意 ICMP 錯誤消息保護
net.ipv4.icmp_ignore_bogus_error_responses = 1
作用:防止網(wǎng)絡中的惡意主機發(fā)送虛假的 ICMP 錯誤消息,提高網(wǎng)絡安全性。
解析:
- net.ipv4.icmp_ignore_bogus_error_responses:設置為1表示忽略虛假的 ICMP 錯誤消息。
說明:防止網(wǎng)絡中的惡意主機通過發(fā)送虛假的 ICMP 錯誤消息來欺騙系統(tǒng),提高系統(tǒng)的安全性。
4、核心轉儲優(yōu)化
kernel.core_uses_pid = 1
作用:配置核心轉儲文件名中包含PID,方便識別和調查問題。
解析:
- kernel.core_uses_pid:設置為1表示在核心轉儲文件名中包含PID。
說明:在數(shù)據(jù)庫環(huán)境中,當發(fā)生進程崩潰時,生成的核心轉儲文件包含進程的PID,有助于精確定位問題,加速故障排查。
5、啟用 SYN 洪水攻擊保護
net.ipv4.tcp_syncookies = 1
作用:啟用 SYN 洪水攻擊保護,防范網(wǎng)絡攻擊。
解析:
- net.ipv4.tcp_syncookies:設置為1表示啟用 SYN 洪水攻擊保護。
說明:SYN 洪水攻擊是一種常見的DDoS攻擊方式,通過啟用 SYN 洪水攻擊保護,系統(tǒng)可以更好地應對大量的虛假連接請求,確保正常的網(wǎng)絡服務。
6、調整消息隊列和共享內存
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
作用:適當調整消息隊列和共享內存的大小,以滿足數(shù)據(jù)庫的需求。
解析:
- kernel.msgmnb:設置消息隊列的最大字節(jié)數(shù)。
- kernel.msgmax:設置消息隊列中單個消息的最大字節(jié)數(shù)。
- kernel.shmmax:設置最大共享內存段的大小。
- kernel.shmall:設置系統(tǒng)范圍內所有共享內存的總頁數(shù)。
說明:通過調整消息隊列和共享內存的大小,可以滿足數(shù)據(jù)庫通信和數(shù)據(jù)共享的需求,優(yōu)化系統(tǒng)性能。
7、調整 TIME-WAIT 狀態(tài)和 TCP 緩沖區(qū)
net.ipv4.tcp_max_tw_buckets = 655350
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_wmem = 8192 131072 16777216
作用:優(yōu)化TCP連接的管理,避免資源耗盡,并提高性能。
解析:
- net.ipv4.tcp_max_tw_buckets:設置 TIME-WAIT 狀態(tài)的最大數(shù)量。
- net.ipv4.tcp_tw_recycle:設置為1表示啟用 TIME-WAIT 快速回收。
- net.ipv4.tcp_tw_reuse:設置為1表示允許將 TIME-WAIT sockets 重新用于新的TCP 連接。
- net.ipv4.tcp_rmem:設置TCP接收緩沖區(qū)的最小、默認和最大字節(jié)數(shù)。
- net.ipv4.tcp_wmem:設置TCP發(fā)送緩沖區(qū)的最小、默認和最大字節(jié)數(shù)。
說明:調整 TIME-WAIT 狀態(tài)和 TCP 緩沖區(qū)參數(shù),有助于優(yōu)化系統(tǒng)處理大量TCP連接的性能,防止資源耗盡。
8、調整網(wǎng)絡連接和資源管理
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
作用:提高系統(tǒng)的網(wǎng)絡性能和連接管理。
解析:
- net.core.somaxconn:設置待處理連接的最大隊列長度。
- net.core.netdev_max_backlog:設置每個網(wǎng)絡接口接收數(shù)據(jù)包的速率比內核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目。
- net.ipv4.tcp_max_orphans:設置系統(tǒng)允許的最大孤立的TCP連接數(shù)量。
- net.ipv4.tcp_max_syn_backlog:設置TCP同時等待處理的最大連接請求數(shù)。
- net.ipv4.tcp_timestamps:設置為0表示禁用TCP時間戳。
說明:通過調整這些參數(shù),可以提高系統(tǒng)處理連接的能力,有效管理網(wǎng)絡資源,防止系統(tǒng)性能瓶頸。
9、配置 TCP Keepalive 和超時參數(shù)
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_retries2 = 5
作用:提高TCP連接的穩(wěn)定性和可靠性。
解析:
- net.ipv4.tcp_keepalive_time:設置TCP連接的空閑時間,超過此時間將發(fā)送keepalive消息。
- net.ipv4.tcp_keepalive_probes:設置TCP發(fā)送keepalive消息的次數(shù)。
- net.ipv4.tcp_keepalive_intvl:設置TCP發(fā)送keepalive消息的頻率。
- net.ipv4.tcp_retries2:設置連接失敗后重新嘗試的最大次數(shù)。
說明:通過配置TCP Keepalive和超時參數(shù),確保長時間運行的連接保持穩(wěn)定,減少因連接中斷導致的性能損失。
10、文件描述符和緩存優(yōu)化
fs.file-max = 65536
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
作用:增加文件描述符限制和調整系統(tǒng)文件緩存大小,提高數(shù)據(jù)庫讀取和寫入效率。
解析:
- fs.file-max:設置系統(tǒng)最大文件描述符數(shù)。
- vm.dirty_background_ratio:設置系統(tǒng)臟頁(尚未同步到磁盤的頁)的最小百分比。
- vm.dirty_ratio:設置系統(tǒng)臟頁的最大百分比。
說明:通過增加文件描述符限制和調整系統(tǒng)文件緩存大小,可以優(yōu)化數(shù)據(jù)庫讀寫性能,提高系統(tǒng)整體性能。
11、調整虛擬內存管理
vm.swAppiness = 0
作用:優(yōu)化虛擬內存管理,減少對交換空間的依賴
說明:設置vm.swappiness為0表示盡量使用物理內存,減少對交換空間的頻繁使用,提高系統(tǒng)整體性能
12、 調整內核崩潰和恢復策略
kernel.panic = 5
kernel.panic_on_oops = 1
kernel.core_pipe_limit = 0
作用: 配置內核崩潰和恢復策略,提高系統(tǒng)穩(wěn)定性
說明: 通過調整這些參數(shù),可以更好地應對內核崩潰和系統(tǒng)出現(xiàn)問題的情況,提高系統(tǒng)的穩(wěn)定性和可靠性
13、調整網(wǎng)絡連接追蹤
net.nf_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max = 655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200
作用: 優(yōu)化網(wǎng)絡連接追蹤,提高系統(tǒng)網(wǎng)絡性能
說明: 調整網(wǎng)絡連接追蹤相關參數(shù),可以更好地適應大量網(wǎng)絡連接的環(huán)境,提高系統(tǒng)網(wǎng)絡性能
14、限制系統(tǒng)打開的端口范圍
net.ipv4.ip_local_port_range = 1024 65535
作用: 限制系統(tǒng)打開的端口范圍,提高系統(tǒng)安全性
說明: 通過限制可用端口范圍,可以減少潛在的安全風險,提高系統(tǒng)安全性
二、結語
深度調優(yōu)數(shù)據(jù)庫服務器性能需要綜合考慮多個方面,包括網(wǎng)絡安全、連接管理、資源利用等。合理配置 Linux 內核參數(shù)是提高數(shù)據(jù)庫性能的關鍵緩解之一。通過這些深度調優(yōu),可以更好地發(fā)揮數(shù)據(jù)庫在高負載環(huán)境下的性能潛力,實現(xiàn)數(shù)據(jù)庫性能的巔峰狀態(tài)。