Chinaunix首页 | 论坛 | 博客
  • 博客访问: 818493
  • 博文数量: 94
  • 博客积分: 1767
  • 博客等级: 上尉
  • 技术积分: 1168
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 23:16
个人简介

ha

文章分类

全部博文(94)

文章存档

2014年(2)

2013年(17)

2012年(6)

2011年(15)

2010年(23)

2009年(23)

2008年(8)

我的朋友

分类: LINUX

2010-12-20 12:58:56

Squid中的FileDescriptor解释:
 即文件描述符,是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。
 
遇到的现象和问题:
 Unix/Linux操作系统通常给每个进程能打开的文件数量强加一个限制。更甚的是,通常有一个系统级的限制。可以在命令行中用ulimit -a命令查看,多数程序运行时,报出"too many openfiles"或本例中的squid的情况都与系统中“open files”环境参数有关,也就是ulimit -n。
 因为squid 的工作方式,文件描述符的限制可能会极大的影响性能。当squid 用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket 被关闭,squid 不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。
 比如我们这次遇到的“WARNING! Your cache is running out of filedescriptors”
 
检查当前的squid配置:
 执行squidclient mgr:info命令可以查看当前squid的所有运行时参数,其中squidclient mgr:info | grep 'file desc'就可以看到关于文件描述符的配置了,例如:
 
        Maximum number of file descriptors:   16384  (这个是最大数量,当然是我们优化以后的,默认是1024,做网关代理肯定不够用了)
        Largest file desc currently in use:   1640  (当前最大使用量)
        Number of file desc currently in use: 1301  (当前使用量)
        Available number of file descriptors: 15083  (剩余数量)
        Reserved number of file descriptors:   100  (保留数量)
 
  通常Squid在安装过程中,执行./configure时,会根据系统中ulimit -n的输出值,来判断其最大可用的FileDescriptor。所以,在运行./configure 之前,检查你的系统的文件描述符限制是否合适,能给你避免一些麻烦。大多数情况下,1024 个文件描述符足够了。非常忙的cache可能需要4096或更多。

 
修改的方法:
 #通常情况下,应当将FileDescriptor至少设置为ulimit -n的2倍。
 第一步:将ulimit -n的数量先加大:ulimit -HSn 32768。这个通常有几种方法:
 1.直接执行:ulimit -HSn 32768,但重启OS后会失效
 2.编辑/etc/rc.local,加入一行:ulimit -HSn 32768,重启后生效
 3.编辑/etc/security/limits.conf,重启后生效(下面2种都可以,其区别可以网上搜一下):
  a.*       -       nofile  32768
  b.proxy           soft    nofile          32768
   proxy           hard    nofile          32768
 4.编辑/etc/init.d/squid,在该脚本执行start()动作前,加入“ulimit -HSn 32768”
  
 第二步:将squid的filedescriptors增大,这个通常也有几种方法:
 1.修改/etc/squid/squid.conf,将max_filedesc设置为32768
 2.编译安装squid时,在执行configure前,先在命令行执行一次:ulimit -HSn 32768
 3.编译安装squid时,在执行configure时,加上--with-maxfd=32768 参数
 
 相比较之下,当然是第一种简单了 :)
阅读(4620) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~