[原创]几个不常用,但是对web性能有帮助的内核变量_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2132 | 回复: 1   主题: [原创]几个不常用,但是对web性能有帮助的内核变量        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2015-4-26 22:33:36 | [全部帖] [楼主帖] 楼主

第一部分:loader.conf

accf_data_load="YES"

说明:accf的作用是先缓冲到来的请求,等到完整的请求包到来后一起提交,这样就省掉几次CPU上下文切换,可以明显地降低CPU处理请求的时间,从而降低load值。这个值对于ssl和spdy效果比较明显,对于nginx,可以添加下面一行:

127.0.0.1:443 ssl spdy accept_filter=dataready;

accf_http_load="YES"

说明:在一个完整的http请求完成前,这一个是先缓存到来的数据。在完整的http/1.0或http/1.1的HEAD或GET请求到达前,内核先将这部分数据缓存,并且阻止应用程序从accept中获取连接句柄。对于不是这两种的请求,kernel会直接放行。

对于nginx,需要在listen后加上一句才能生效:

listen 127.0.0.1:80 accept_filter=httpready;

#accf_dns_load="YES"

说明:对于DNS先缓存,能明显提高unbound的性能

ahci_load="YES"

这个就不用解释了吧,小文件时就能看出跟ide的区别

aio_load="YES"

说明:异步IO,对于nginx的性能还是很有帮助的,可以不对文件加锁,node.js的终极武器。

cc_htcp_load="YES"

说明:H-TCP拥塞控制算法,是一个针对高速、高延迟网络设计的一种算法,可以提高广域网上性能,在局域网中效果不大。有了这个内核模块后,可以在sysctl中对tcp设置下面的参数:

net.inet.tcp.cc.algorithm=htcp

net.inet.tcp.cc.htcp.adaptive_backoff=1

net.inet.tcp.cc.htcp.rtt_scaling=1

net.inet.tcp.hostcache.cachelimit="0"

说明:hostcache的作用是对于已经建立的连接,把协商的连接参数先保存下来,比如:TTL值,SSTRESH以及VARTTL,在下次连接的时候,会直接使用hostcache里的参数,不需要再进行协商和学习,从而提高了性能。这在大多数时候是有效的,但是对于某些情况,这反倒是个累赘,有时候关闭会更有效。比如对于无线连接,它的连接一般是不稳定的,一直用同一个参数,会导致问题,如果最开始学习到的是最差的时候,就会拖累后面的性能;反过来,如果学习的时候是最好的时候,那后面再按照这个值发送,会导致对方收不到数据。

关闭这个参数,会把net.inet.tcp.hostcache.expire一起禁用掉。

     可以用下面的命令查看hostcache表:

%  sysctl net.inet.tcp.hostcache.list

net.inet.tcp.hostcache.list:

IP address        MTU  SSTRESH      RTT   RTTVAR BANDWIDTH     CWND SENDPIPE RECVPIPE HITS  UPD  EXP

220.249.90.232      0     3000     57ms      1ms         0     5840        0        0    0    1  600

171.208.28.206      0    22266     88ms     21ms         0    15696        0        0  116   37  600

58.61.152.98        0     7439     71ms     16ms         0    14454        0        0 231894   82 3600

114.235.82.177      0     2984     53ms     14ms         0     5832        0        0    0    1 1200

相关的内核变量是:

net.inet.tcp.hostcache.expire=3900

第二部分:sysctlc.conf

net.inet.tcp.tso=0   # (default 1)

说明:tso虽然可以明显减轻CPU的负担,但是如果你使用了防火墙,比如ipfw和pf,则会带来一些问题,如果你遇到一些莫名奇妙的网络故障,比如某些情况下,某些数据包会发不出去或收不到,那么你可以禁用tso试试,禁用tso对于web服务器来说,不会明显加重CPU负担。

net.inet.tcp.nolocaltimewait=1  # (default 0)

说明:对于本机的连接,不要创建一个socket或者压缩tcpw,这对于本机的应用有好处,比如数据库和web,以及php-fpm都在一台机器的情况下,会有所帮助。




赞(0)    操作        顶端 
ainy
注册用户
等级:中士
经验:221
发帖:0
精华:0
注册:2015-4-27
状态:离线
发送短消息息给ainy 加好友    发送短消息息给ainy 发消息
发表于: IP:您无权察看 2015-4-27 11:32:52 | [全部帖] [楼主帖] 2  楼

虽不明,已觉励 北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论