Linux下解决squid的filedescriptors问题

今日squid的日志文件经常报错:
WARNING! Your cache is running out of filedescriptors

查网上资料得知:filedescriptors为文件描述符

文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。Unix 操作系统通常给每个进程能打开的文件数量强加一个限制。更甚的是,unix 通常有一个系统级的限制。

因为squid 的工作方式,文件描述符的限制可能会极大的影响性能。当squid 用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket 被关闭,squid 不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。

在运行./configure 之前,检查你的系统的文件描述符限制是否合适,能给你避免一些麻烦。大多数情况下,1024 个文件描述符足够了。非常忙的cache可能需要4096或更多。在配置文件描述符限制时,我推荐设置系统级限制的数量为每个进程限制的2 倍。

检查设置:
# ulimit -n
1024

默认为1024个文件描述符

重新设置:
# ulimit -HSn 65536
显示:
# ulimit -n
65536

然后重新编译安装squid

最后,将ulimit -HSn 65536设置在/etc/rc.d/rc.local中,防止重启后失效

7 Responses to “Linux下解决squid的filedescriptors问题”

  1. cw Says:

    在你的站上为什么不能开一个phpnuke的专题呀,介绍一下这方面的经验,目前国内懂这些程序的人都藏起来了呀


  2. newdir Says:

    cnBeta 不是在phpnuke基础上改的,是自己写的代码


  3. stug Says:

    贵站也是自己写的?


  4. bEANR Says:

    这个效果只是权宜之策,只有真正的修改Linux原核代码才能真正达到突破files open超过1024


  5. siaaa Says:

    看了感觉部错。写得有点水平。给你顶一个。
    继续关注你的博客547


  6. 花恋碟 Says:

    看了感觉不错。给你顶一个.
    别忘了也来我的博客溜达下哦
    继续溜达一下你的博客


  7. JulyClyde Says:

    bEANR说的那个Linux内核对于fd的限制,早在2.2版本内核就已经取消了


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>