文档结构  
翻译进度:已翻译     翻译赏金:1 元 (?)    ¥ 我要打赏

如果你想要一个高性能的 HAProxy 系统,那么有很多的调整和设置可以让你受益。这些调整和设置里有一些很复杂,但也有很多可以简单快速的提升性能。接下来我将给你一些技巧可以让你大幅提升性能。

警告:这些调整中很多是 Linux 内核的调整,可能会导致不可预知的问题,如果你不确定的话可以搜索相应问题,或者直接问我们。

Sysctl.conf 调整

sysctl 是一个用来调整操作系统内核设置的程序。这是你用来优化内核参数的处理方式,特别是网络方面的优化。如果你使用 Snapt,在 HAProxy 里你可以通过 Setup > Configuration > Performance 菜单来访问。你也可以直接编辑 /etc/sysctl.conf 文件。

第 1 段(可获 1.6 积分)

这些设置是专门针对 Linux 下安装 HAProxy 的优化,使之在最高负载的情况下表现更好,每秒处理的请求数更多。

通过将下列内容粘贴进 /etc/sysctl.conf 文件,然后运行  sysctl -p"  让这些设置生效。

# Increase the max OS recv/send buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# Increase the connection track table size
net.ipv4.netfilter.ip_conntrack_max = 999999

# Widen the local port range to allow more ports
net.ipv4.ip_local_port_range = 1024 65023

# Lower the TCPFIN timeout
net.ipv4.tcp_fin_timeout = 30

# Increase the max backlog, syn tweaks
net.core.netdev_max_backlog = 10000
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

# Enable syn cookies vs syn floods, RP filter
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1

# Increase to handle spikes of traffic
net.core.somaxconn = 60000

# Increase the TIME WAIT buckets pool size for DoS/performance
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1

# Adjust TCP orphan limit
net.ipv4.tcp_max_orphans = 262144
第 2 段(可获 0.58 积分)

如果发生任何错误可能是因为核心版本或者其他相关问题,只需要删除相关行即可。记住重启系统或者运行 sysctl -p” 让修改生效。

Haproxy.cfg 配置改动


下面是一些在创建或者调整 haproxy.cfg 文件时需要记住的技巧。

模式选择

TCP 模式要比 HTTP 模式在负载的支持上多得多。请检查配置中的 mode 设置,如果你不需要做任何 HTTP 几倍的调整,那么 TCP 模式要快得多。

HTTP 调整

有很多的配置改动会影响性能,但是有一些简单的调整可以让你的服务器群支持的负载更多。首先考虑添加 option httpclose 到所有的 HTTP 组。在 Snapt 中这被称为 “Force HTTP Close.” 该配置禁用了 HTTP keepalive 特性,但这是你的优势。同时增加 option abortonclose – 该配置可以关闭被中断的请求。

第 3 段(可获 1.91 积分)

Maxconn 设置

HAProxy 通过全局以及 frontend/listen 级别上利用 maxconn 设置对连接数进行限制,其限制了 HAProxy 最大可接受的并发连接数,所以需要确保这个数值足够高。你可以在单独的组中设置,跟全局设置一样。在 Snapt 中这叫做 “Maximum Connections.”

确保你你在全局的设置值比在 listen 和 frontend 中的配置值高。

负载均衡方法 Balance Method

只有当你选择负载均衡方法时有用。记住 roundrobin 要更快一些,因此如果没有一个更高级的方法就不要使用别的(在性能要求严苛的情况下)。

第 4 段(可获 1.51 积分)

压缩

HTTP 压缩会占用大量的 CPU 处理时间,如果你在一个高性能的环境中,你会想要禁用这个特性,很明显这样做有利有弊。

第 5 段(可获 0.35 积分)

文章评论