V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
viberconnection
V2EX  ›  Linux

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

  •  
  •   viberconnection · 2022-04-11 15:20:59 +08:00 · 2049 次点击
    这是一个创建于 752 天前的主题,其中的信息可能已经有所发展或是发生改变。
    疑問背景:
    前些日子小團隊請了專業的工程師來幫忙提升用作 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
    Xusually
        1
    Xusually  
       2022-04-11 15:35:38 +08:00 via iPhone
    没细看 不过你可以去找一下 mysql 优化内核参数 sysctl 的文章看一下都改了哪些 反过来对照一下看看
    aloxaf
        2
    aloxaf  
       2022-04-11 15:37:08 +08:00   ❤️ 1
    vm. 那段比较可疑,设置了相当保守的内存使用策略,建议去掉试一下
    neutrinos
        3
    neutrinos  
       2022-04-11 17:32:39 +08:00 via iPhone
    swapness 调到 1 试试,装个 mysql 监控看 metric 吧
    liuxu
        4
    liuxu  
       2022-04-11 19:25:53 +08:00   ❤️ 1
    这个事情比较复杂,即使现场调查,保守估计也得两周一个月才能给出你要答案

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

    建议把这个文件配置全部注释掉,直接用默认配置,然后一点一点解开注释,前后对比分析
    大部分情况下只需要 net.core.*和 net.ipv4.*/net.ipv6.*中的少量配置
    viberconnection
        5
    viberconnection  
    OP
       2022-04-11 20:39:27 +08:00 via Android
    @liuxu 好的,感謝建議ㄡ。
    viberconnection
        6
    viberconnection  
    OP
       2022-04-11 20:40:14 +08:00 via Android
    @aloxaf 感謝建議,核實之後的確是這方面的問題,已請人做調整。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2334 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:18 · PVG 21:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.