这是一个创建于 893 天前的主题,其中的信息可能已经有所发展或是发生改变。
疑問背景:
前些日子小團隊請了專業的工程師來幫忙提升用作 PROXY 用途伺服器上的網路效能,經過對相應程式和系統的優化,的確是將現有帶寬利用至相當充分。
之前數據庫伺服器上也存在相應的網路效能問題,於是不懂技術的成員就在搜索引擎上查了一下,就想當然地把那臺機器上的 sysctl.conf 搬到了這臺機器上來。
隨之而來新的問題就出現了,帶寬利用率雖然是達到了相當好的水平,但是 Mysql 處理效能卻下降了不少,並且延時有時高到了無法接受的水準。
想問的問題:
所以這份配置究竟存在什麼問題?如果知道問題出自於哪又應當如何修改?
希望熟悉的人可以幫幫忙,在這先謝謝大家了。
附配置檔:
kernel.sysrq = 0
kernel.panic = 1
kernel.watchdog = 0
net.core.default_qdisc = cake
net.core.netdev_max_backlog = 4096
net.core.rmem_max = 4000000
net.core.rmem_default = 4000000
net.core.wmem_max = 4000000
net.core.wmem_default = 4000000
net.core.somaxconn = 256
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 200
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_sack = 1
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_base_mss = 1024
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_ecn_fallback = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fastopen = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 3
net.ipv4.tcp_fin_timeout = 3
net.ipv4.tcp_max_tw_buckets = 65535
net.ipv4.ip_default_ttl = 255
net.ipv4.tcp_window_scaling = 1
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.tcp_low_latency = 1
net.ipv4.ip_forward = 1
net.ipv4.ip_early_demux = 0
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_orphan_retries = 2
net.ipv4.tcp_min_tso_segs = 2
net.ipv4.tcp_tso_win_divisor = 2
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_adv_win_scale = 2
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_comp_sack_delay_ns = 1000000
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_early_demux = 0
net.ipv4.udp_early_demux = 0
net.ipv4.tcp_recovery = 1
net.ipv4.tcp_frto = 2
net.ipv4.tcp_min_rtt_wlen = 50
net.ipv4.tcp_reordering = 6
net.ipv4.ipfrag_time = 60
net.ipv4.ping_group_range= 0 10
net.ipv4.route.min_adv_mss = 1024
net.ipv4.route.gc_min_interval_ms = 200
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.all.proxy_ndp = 1
net.ipv6.conf.all.hop_limit = 128
net.ipv6.conf.default.hop_limit = 128
net.ipv6.route.min_adv_mss = 1024
net.ipv6.route.mtu_expires = 600
net.ipv6.ip6frag_time = 60
net.ipv6.route.gc_min_interval_ms = 200
vm.swappiness = 100
vm.vfs_cache_pressure = 200
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 1000
vm.dirty_ratio = 4
vm.dirty_background_ratio = 2
vm.min_free_kbytes = 150000
vm.max_map_count = 262144
vm.page-cluster = 4
vm.zone_reclaim_mode = 2
vm.dirtytime_expire_seconds = 21600
vm.overcommit_memory = 0
vm.overcommit_ratio = 25
vm.extfrag_threshold = 10
vm.memory_failure_early_kill = 1
fs.aio-max-nr = 1048576
fs.lease-break-time = 15
net.nf_conntrack_max = 1024576
net.netfilter.nf_conntrack_buckets = 32768
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
net.netfilter.nf_conntrack_sctp_timeout_established = 3600
net.netfilter.nf_conntrack_dccp_timeout_open = 3600
第 1 条附言 · 2022-04-11 20:42:34 +08:00
原因找到了,的確是配置檔中 vm 開始的部分設定不當所致,已做調整。並且 MYSQL 工作正常了。
第 2 条附言 · 2022-04-11 20:44:35 +08:00
而且的確非 PROXY 用途的伺服器不需要這麼多項目設定。
感謝各位的建議
第 3 条附言 · 2022-04-15 16:26:02 +08:00
然後再將 somaxconn 那項調整至 1024576 或者更大的數值,這下所有情形都正常了。
6 条回复 • 2022-04-11 20:40:14 +08:00
|
|
1
Xusually 2022-04-11 15:35:38 +08:00 via iPhone
没细看 不过你可以去找一下 mysql 优化内核参数 sysctl 的文章看一下都改了哪些 反过来对照一下看看
|
|
|
2
aloxaf 2022-04-11 15:37:08 +08:00 1
vm. 那段比较可疑,设置了相当保守的内存使用策略,建议去掉试一下
|
|
|
3
neutrinos 2022-04-11 17:32:39 +08:00 via iPhone
swapness 调到 1 试试,装个 mysql 监控看 metric 吧
|
|
|
4
liuxu 2022-04-11 19:25:53 +08:00 1
这个事情比较复杂,即使现场调查,保守估计也得两周一个月才能给出你要答案
例如有没有可能是你带宽利用率上来后导致业务数增加,而你 mysql 没能支撑住,并不是系统配置问题 又或者是你网络拓扑图中其他地方瓶颈导致 再或者说是这个配置 somaxconn 太低
建议把这个文件配置全部注释掉,直接用默认配置,然后一点一点解开注释,前后对比分析 大部分情况下只需要 net.core.*和 net.ipv4.*/net.ipv6.*中的少量配置
|