私人网站服务器搭建,郑州最新出入通知,青海建设厅网站通知,黔南州住房和城乡建设局网站lvs调优主要是针对内核参数的调优一、调整内核参数CONFIG_IP_VS_TAB_BITS1.1 CONFIG_IP_VS_TAB_BITS说明IPVS connection hash table size#xff0c;取值范围:[12,20]。该表用于记录每个进来的连接及路由去向的信息。连接的Hash表要容纳几百万个并发连接#xff0c;任何一个… lvs调优主要是针对内核参数的调优一、调整内核参数 CONFIG_IP_VS_TAB_BITS1.1 CONFIG_IP_VS_TAB_BITS说明 IPVS connection hash table size取值范围:[12,20]。该表用于记录每个进来的连接及路由去向的信息。连接的Hash表要容纳几百万个并发连接任何一个报文到达都需要查找连接Hash表。Hash表的查找复杂度为O(n/m)其中n为Hash表中对象的个数m为Hash表的桶个数。当对象在Hash表中均匀分布和Hash表的桶个数与对象个数一样多时Hash表的查找复杂度可以接近O(1)。 连接跟踪表中每行称为一个hash buckethash桶桶的个数是一个固定的值CONFIG_IP_VS_TAB_BITS默认为122的12次方4096。这个值可以调整该值的大小应该在 8 到 20 之间详细的调整方法见后面。每一行都是一个链表结构包含N列即N条连接记录这个N是无限的N的数量决定了决定了查找的速度。在LVS的实现说明中有这样的一段话可以帮助很好的理解行和列的关系为了评价Hash函数的效率我们从一个运行IPVS的真实站点上取当前连接的样本它一共含有35652个并发连接。在有64K桶的Hash表中连接分布如下桶的长度Lj该长度桶的个数Nj5 164 1263 9802 56141 20900所有连接查找一次的代价为45122每个连接查找的平均代价为1.266即45122/35652。 LVS的调优建议将hash table的值设置为不低于并发连接数。例如并发连接数为200Persistent时间为200S那么hash桶的个数应设置为尽可能接近200x200400002的15次方为32768就可以了。当ip_vs_conn_tab_bits20 时哈希表的的大小条目为 pow(2,20)即 1048576对于64位系统IPVS占用大概16M内存可以通过demsg看到IPVS: Connection hash table configured (size1048576, memory16384Kbytes)。对于现在的服务器来说这样的内存占用不是问题。所以直接设置为20即可。关于最大“连接数限制”这里的hash桶的个数并不是LVS最大连接数限制。LVS使用哈希链表解决“哈希冲突”当连接数大于这个值时必然会出现哈稀冲突会稍微降低性能但是并不对在功能上对LVS造成影响。1.2 调整 ip_vs_conn_tab_bits的方法 新的IPVS代码允许调整 ip_vs_conn_bits 的值。而老的IPVS代码则需要通过重新编译来调整。在发行版里IPVS通常是以模块的形式编译的。 确认能否调整使用命令 modinfo -p ip_vs查看 ip_vs 模块的参数看有没有 conn_tab_bits 参数可用。假如可以用那么说时可以调整调整方法是加载时通过设置 conn_tab_bits参数在/etc/modprobe.d/目录下添加文件ip_vs.conf内容为options ip_vs conn_tab_bits20查看ipvsadm -l如果显示IP Virtual Server version 1.2.1 (size4096),则前面加的参数没有生效modprobe -r ip_vsmodprobe ip_vs重新查看IP Virtual Server version 1.2.1 (size1048576)假如没有 conn_tab_bits 参数可用则需要重新调整编译选项重新编译。Centos6.2内核版本2.6.32-220.13.1.el6.x86_64仍然不支持这个参数只能自定义编译了。另外假如IPVS支持调整 ip_vs_conn_tab_bits而又将IPVS集成进了内核那么只能通过重启向内核传递参数来调整了。在引导程序的 kernel 相关的配置行上添加ip_vs.conn_tab_bits20 然后重启。或者重新编译内核。二、系统参数优化2.1 关闭网卡LRO和GRO 现在大多数网卡都具有LRO/GRO功能即 网卡收包时将同一流的小包合并成大包 tcpdump抓包可以看到MTU 1500bytes的数据包交给 内核协议栈LVS内核模块在处理MTU的数据包时会丢弃 因此如果我们用LVS来传输大文件很容易出现丢包传输速度慢 解决方法关闭LRO/GRO功能命令 ethtool -k eth0 查看LRO/GRO当前是否打开 ethtool -K eth0 lro off 关闭GRO ethtool -K eth0 gro off 关闭GRO 2.2 禁用ARP增大backlog并发数 net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 net.core.netdev_max_backlog 500000 三、lvs自身配置调优3.1 尽量避免sh算法 一些业务为了支持会话保持选择SH调度算法以实现 同一源ip的请求调度到同一台RS上但 SH算法本省没有实现一致性hash一旦一台RS down当前所有连接都会断掉如果配置了inhibit_on_failure那就更悲剧了调度到该RS上的流量会一直损失 实际线上使用时如需 会话保持建议配置 persistence_timeout参数保证一段时间同一源ip的请求到同一RS上。3.2 增大hash桶锁个数 对于一个16核的服务器来说可以将桶锁个数调整为8. ipvs源码目录下修改文件vim ip_vs_conn.c - #define CT_LOCKARRAY_BITS 8参考http://blog.csdn.net/yanziguishi/article/details/7284793http://blog.sina.com.cn/s/blog_781b0c850101ogne.html 转载于:https://blog.51cto.com/shanks/1319980