公交迷网 - 巴士之家

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索

freebsd 7.2 内核优化提高负载

热度 2已有 2607 次阅读2010-4-16 12:35 |个人分类:疑难杂症

  1. uname -a
  2. FreeBSD web_1 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May 1 07:18:07 UTC 2009 root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
复制代码
nginx 0.7.63作反向代理
worker_processes  16;
worker_rlimit_nofile 51200;
events {
    use kqueue;
    worker_connections  51200;
}
  1. #tail /var/log/messages
  2. Nov 25 21:47:11 web_1 kernel: kern.maxfiles limit exceeded by uid 88, please see tuning(7).
  3. Nov 25 21:47:12 web_1 kernel: kern.maxfiles limit exceeded by uid 80, please see tuning(7).
  4. Nov 25 21:47:44 web_1 last message repeated 27 times
  5. Nov 25 21:48:16 web_1 last message repeated 17 times
  6. Nov 26 09:04:01 web_1 kernel: Limiting open port RST response from 341 to 200 packets/sec
复制代码
查看当前内核参数
  1. #sysctl -a
  2. kern.maxfiles: 12328
  3. kern.maxfilesperproc: 11095
  4. net.inet.icmp.icmplim: 200
  5. net.inet.icmp.icmplim_output: 1
  6. kern.ipc.somaxconn:128
  7. net.inet.tcp.blackhole: 0
  8. net.inet.udp.blackhole: 0
  9. net.inet.udp.maxdgram: 9216
  10. net.inet.tcp.sendspace: 32768
  11. net.inet.tcp.recvspace: 65536
  12. kern.ipc.nmbclusters: 25600
  13. vfs.vmiodirenable: 1
  14. net.inet.tcp.msl: 30000
  15. net.inet.tcp.finwait2_timeout: 60000
  16. net.inet.tcp.fast_finwait2_recycle: 0
复制代码
优化内核,立即生效
  1. #sysctl -w kern.maxfiles=65536
  2. #sysctl -w kern.maxfilesperproc=65536
  3. #sysctl -w net.inet.icmp.icmplim=500
  4. #sysctl -w net.inet.icmp.icmplim_output=0
  5. #sysctl -w kern.ipc.somaxconn=4096
  6. #sysctl -w net.inet.tcp.blackhole=2
  7. #sysctl -w net.inet.udp.blackhole=1
  8. #sysctl -w net.inet.udp.maxdgram=65536
  9. #sysctl -w net.inet.tcp.sendspace=65536
  10. #sysctl -w net.inet.tcp.recvspace=65536
  11. #sysctl -w kern.ipc.nmbclusters=32768
  12. #sysctl -w net.inet.tcp.msl=2500
  13. #sysctl -w net.inet.tcp.finwait2_timeout=600
  14. #sysctl -w net.inet.tcp.fast_finwait2_recycle=1
复制代码
以下三个参数可以在几分钟后大幅减少FIN_WAIT_2 等待数
  1. net.inet.tcp.msl
  2. net.inet.tcp.finwait2_timeout
  3. net.inet.tcp.fast_finwait2_recycle
复制代码
保存参数
  1. #vi /etc/sysctl.conf
  2. kern.maxfiles=65536
  3. kern.maxfilesperproc=65536
  4. net.inet.icmp.icmplim=500
  5. net.inet.icmp.icmplim_output=0
  6. kern.ipc.somaxconn=4096
  7. net.inet.tcp.blackhole=2
  8. net.inet.udp.blackhole=1
  9. net.inet.udp.maxdgram=65536
  10. net.inet.tcp.sendspace=65536
  11. net.inet.tcp.recvspace=65536
  12. kern.ipc.nmbclusters=32768
  13. net.inet.tcp.msl=2500
  14. net.inet.tcp.finwait2_timeout=600
  15. net.inet.tcp.fast_finwait2_recycle=1
复制代码
  1. #vi /boot/loader.conf
  2. kern.ipc.nmbclusters="102400"
  3. kern.ipc.nmbufs="409600"
复制代码
这2个参数须重启服务器才能生效

查看tcp状态
  1. #netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
  2. FIN_WAIT_1 1610
  3. FIN_WAIT_2 19
  4. SYN_SENT 54
  5. LAST_ACK 286
  6. CLOSING 7
  7. CLOSE_WAIT 2
  8. SYN_RCVD 55
  9. TIME_WAIT 213
  10. ESTABLISHED 10928
复制代码
  1. #netstat -m
  2. 2284/25241/27525 mbufs in use (current/cache/total)
  3. 664/14398/15062/32768 mbuf clusters in use (current/cache/total/max)
  4. 664/14312 mbuf+clusters out of packet secondary zone in use (current/cache)
  5. 998/8109/9107/12800 4k (page size) jumbo clusters in use (current/cache/total/max)
  6. 0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
  7. 0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
  8. 5891K/67542K/73433K bytes allocated to network (current/cache/total)
  9. 0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
  10. 0/0/0 requests for jumbo clusters denied (4k/9k/16k)
  11. 0/0/0 sfbufs in use (current/peak/max)
  12. 0 requests for sfbufs denied
  13. 0 requests for sfbufs delayed
  14. 160 requests for I/O initiated by sendfile
  15. 0 calls to protocol drain routines
复制代码
参考
http://wiki.freebsdchina.org/doc/s/sysctl/tuning
http://blog.csdn.net/hjue/archive/2005/12/16/553703.aspx

评论 (0 个评论)

手机版|小黑屋|公交迷网 ( 苏ICP备18015221号

GMT+8, 2024-4-26 15:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部