Linux教程之Linux kernel 功能压力下的优化理论(V0.1)仓酷云
常用的linux命令,尤其是一些能帮你提高开发效率的命令,(eg:grep,awk,sed,split等);做benchmark测试的过程当中,老是会触及到linux操纵体系底层的设置招致没法充实使用呆板的功能,在调试的过程当中,很多材料没能和linuxkernel版本对应上招致一些参数的设置毛病。依据现有服务器的硬件前提和软件版本做相干优化,把一些理论的心得分享出来。
Kernelversion:2.6.32-71.el6.x86_64
Cpu:Intel(R)Xeon(R)CPUE5606@2.13GHz
Memory:8G
Releasenotes:v0.12012-03-31句柄数,收集参数
成绩1:句柄数的成绩
利用webbench在Linux下做varlish会见压力测试的时分,碰到Socket/File:Can’topensomanyfiles的成绩,缘故原由是linux下一切的工具都是文件,包含socket接口,关于大批的收集毗连,不单单损耗socket文件形貌符,关于历程自己还翻开相称多的文件,Linux的默许句柄数是1024。
办理体例:
修正/etc/security/limits.conf
你的用户名softnofile65535##ulimit-Sn
你的用户名hardnofile65535##ulimit-Hn
unlimt-n检察参考材料:
[*]经由过程ulimit改良体系功能
成绩2:收集参数
利用ab大概webbench做压力测试,假如并发数开到1000的时分,没法完成测试。到早晨检察材料发明是linux收集参数设置。
办理体例:
#vi/etc/sysctl.conf
在kernel2.6之前的增加项:
net.ipv4.netfilter.ip_conntrack_max=655360
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
kernel2.6以后的增加项:
net.nf_conntrack_max=655360#net.nf_conntrack_max=655360也能够
net.netfilter.nf_conntrack_tcp_timeout_established=1200
#sysctl-p/etc/sysctl.conf
假如报错:error:"net.nf_conntrack_max"isanunknownkey则必要利用modprobe载进ip_conntrack模块,lsmod检察模块已载进。
#modprobeip_conntrack
后续申明:
–CONNTRACK_MAX同意的最年夜跟踪毗连条目,是在内核内存中netfilter能够同时处置的“义务”(毗连跟踪条目)
–HASHSIZE存储跟踪毗连条目列表的哈西表的巨细
CONNTRACK_MAX和HASHSIZE的默许值
一样平常来讲,CONNTRACK_MAX和HASHSIZE城市设置在“公道”利用的值上,根据可以使用的RAM的巨细来盘算这个值。
CONNTRACK_MAX的默许值
在i386架构上,CONNTRACK_MAX=RAMSIZE(以bytes记)/16384=RAMSIZE(以MegaBytes记)*64,因而,一个32位的带512M内存的PC在默许情形下可以处置512*1024^2/16384=512*64=32768个并发的netfilter毗连。
可是真实的公式是:CONNTRACK_MAX=RAMSIZE(inbytes)/16384/(x/32)这里x是指针的bit数,(比方,32大概64bit)
请注重:
-默许的CONNTRACK_MAX值不会低于128
-关于带有凌驾1G内存的体系,CONNTRACK_MAX的默许值会被限定在65536(可是能够手工设置成更年夜的值)
HASHSIZE的默许值
一般,CONNTRACK_MAX=HASHSIZE*8。这意味着每一个链接的列表均匀包括8个conntrack的条目(在优化的情形而且CONNTRACK_MAX到达的情形下),每一个链接的列表就是一个哈西表条目(一个桶)。
在i386架构上,HASHSIZE=CONNTRACK_MAX/8=RAMSIZE(以bytes记)/131072=RAMSIZE(以MegaBytes记)*8。举例来讲,一个32位、带512M内存的PC能够存储512*1024^2/128/1024=512*8=4096个桶(链接表)
可是真实的公式是:HASHSIZE=CONNTRACK_MAX/8=RAMSIZE(以bytes记)/131072/(x/32)这里x是指针的bit数,(比方,32大概64bit)
请注重:
-默许HASHSIZE的值不会小于16
-关于带有凌驾1G内存的体系,HASHSIZE的默许值会被限定在8192(可是能够手工设置成更年夜的值)
参考材料:
[*]Conntracktuning
[*]kernelnf_conntrack:tablefull,droppingpacket办理举措
[*]不要自觉增添ip_conntrack_max-了解Linux内核内存
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。以上是我学习Linux的心得体会,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。 查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。 我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是2000,后来又有了XP,上大学时又有了win7。 了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。 有疑问前,知识学习前,先用搜索。 笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机 感谢老师和同学们在学习上对我的帮助。 随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。 上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题. 熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
页:
[1]