請問這份 Sysctl 配置究竟存在什麼問題?

2022-04-11 15:20:59 +08:00
 viberconnection
疑問背景:
前些日子小團隊請了專業的工程師來幫忙提升用作 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
2088 次点击
所在节点    Linux
6 条回复
Xusually
2022-04-11 15:35:38 +08:00
没细看 不过你可以去找一下 mysql 优化内核参数 sysctl 的文章看一下都改了哪些 反过来对照一下看看
aloxaf
2022-04-11 15:37:08 +08:00
vm. 那段比较可疑,设置了相当保守的内存使用策略,建议去掉试一下
neutrinos
2022-04-11 17:32:39 +08:00
swapness 调到 1 试试,装个 mysql 监控看 metric 吧
liuxu
2022-04-11 19:25:53 +08:00
这个事情比较复杂,即使现场调查,保守估计也得两周一个月才能给出你要答案

例如有没有可能是你带宽利用率上来后导致业务数增加,而你 mysql 没能支撑住,并不是系统配置问题
又或者是你网络拓扑图中其他地方瓶颈导致
再或者说是这个配置 somaxconn 太低

建议把这个文件配置全部注释掉,直接用默认配置,然后一点一点解开注释,前后对比分析
大部分情况下只需要 net.core.*和 net.ipv4.*/net.ipv6.*中的少量配置
viberconnection
2022-04-11 20:39:27 +08:00
@liuxu 好的,感謝建議ㄡ。
viberconnection
2022-04-11 20:40:14 +08:00
@aloxaf 感謝建議,核實之後的確是這方面的問題,已請人做調整。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/846292

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX