lxy777 发表于 2019-1-6 07:13:06

lvs增加并发连接,解决因为哈希表过小导致软中断过高问题

  LVS,一个N久前就在使用的东西,目前来说配置什么的也没什么问题。只是个人觉得随着业务的上涨和流量的增加,它的连接数必然也会增长,所以在配置的时候就想直接把它改大。
  在安装好后(Centos6.5的系统,yum安装ipvs),默认情况下是4096(2的12次方)
  ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  配置好后是1048576
  ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=1048576)
  在这里我们要做的是在/etc/modprobe.d/目录下加个ip_vs.conf文件,其内容为options ip_vs conn_tab_bits=20即可,然后重启服务器就可以生效了。配置起来还是比较简单的。
  配置完后占用内存情况为,约16M左右。对于现在的服务器来说,小意思。
  dmesg |grep IPVS
  IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
  IPVS: Connection hash table configured (size=1048576, memory=16384Kbytes)
  IPVS: ipvs loaded.
  IPVS: scheduler registered.
  关于这方面我大概找了下。

  IPVS connection hash table>  连接跟踪表中,每行称为一个hash bucket(hash桶),桶的个数是一个固定的值CONFIG_IP_VS_TAB_BITS,默认为12(2的12次方,4096)。这个值可以调整,该值的大小应该在 8 到 20 之间,详细的调整方法见上面。
  LVS的调优建议将hash table的值设置为不低于并发连接数。例如,并发连接数为200,Persistent时间为200S,那么hash桶的个数应设置为尽可能接近200x200=40000,2的15次方为32768就可以了。当ip_vs_conn_tab_bits=20 时,哈希表的的大小(条目)为 pow(2,20),即 1048576。
  这里的hash桶的个数,并不是LVS最大连接数限制。LVS使用哈希链表解决“哈希冲突”,当连接数大于这个值时,必然会出现哈稀冲突,会(稍微)降低性能,但是并不对在功能上对LVS造成影响。

页: [1]
查看完整版本: lvs增加并发连接,解决因为哈希表过小导致软中断过高问题