- 论坛徽章:
- 0
|
这个应该是不会的。这个超时是空闲超时,当有流量通过的时候应该刷新计时器的。
同意,不过超时时间也不能设置来一味的短,否则也得不尝失。
开发者考虑的问题不仅是网络,还有其他的应用,所以程序未必能按你的想法进行开发,
所以自己做的一些参数调整有时是非常重要的。有的时候,我也不能理解开发者的意图,
例如:ip_conntrack_max 和buckets这两个值,为什么定义buckets是内存的1/16384?
为什么内存大于1G,buckets被固定为8192?为什么一个buckets对应8个ip_conntrack?
不能是4个?16个?32个?是否能优化?上面的这些参数,我曾经编译内核测试过,没有发现有区别,
原作者如何定这些参数,到目前为止我都很想了解
hash桶的大小的选择,做为内核开发者,考虑到与其它子系统的相对平均的分享内存,所以一般都没有设置来为太大。其它子系统,
同样如此。如果内核专门拿来做NAT服务器,把这个值加大是无可厚非的——因为这在种应用中,其它子系统应用是非常少的(例如文件子系统等等)。
hash链的大小:因为链太长,意味着搜索时间有可能会很长。这也是个折衷值而已,我想对于小规模应用, 设为4 - 8,是正常的,对于大规则应用,8 - 16则也是可以接受的,而太长,> 32的值,则要留待实验去检验了。
不过这也跟实际的包的特征有很大的关系,举个例子,把来源地址随机分布,让hash表上到100W。偶的100Mb 线速转发的机器一下子就下降到 2- 3Mb了。
2. 高容量确实容易出现问题,也不能一味提高硬件性能来解决,很多时候用分流的方法更有效。
提高硬件性能,到了一个极限,如我用到26万并发连接时,系统已经趋于不太稳定了,在当时的情况下,
cpu的负载才16%左右,所以提高硬件性能帮助有限
是这样的。因为并不是每个网络都可以分流的,所以提升硬件配置是不得已而为止。这里的硬件配置不仅指CPU,也包含内存、总线,网卡……无论如何,这些还是挺立杆见影的 ——— 但正如你所讲的,这是在一定负载下面,当到了一定程度,硬件的提升带来性能的提升空间就很小了。
3. 多核的情况我已经测试过了(用centos4.3和centos4.6的内核测试),比单核还差,即使邦定网卡,效率也是不如单核,
所以我强调只用up的内核,不要用smp的内核。
Netfilter多对核的支持的确不太好,也许正在改进中吧,但这毕竟不是一件简单的事情。不过我想问的是网卡中断亲和性的问题,不知哪位朋友有没有试过在这种条件下,是否会提升网卡的吞吐性能(因为毕竟不设置,多核就相当于单核在用了)? |
|