VeryCD已经多处用到了squid作为反向代理,但是使用中发现squid频繁报错 CODE
WARNING! Your cache is running out of filedescriptors 起初以为是cache文件的设置问题,尝试了多种解决方案,增大cache容量,清空cache目录,都没有解决此问题。 多方求助+STFW后发现,filedescriptors即为文件描述符。 QUOTE
文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。Unix 操作系统通常给每个进程能打开的文件数量强加一个限制。更甚的是,unix 通常有一个系统级的限制。 因为squid 的工作方式,文件描述符的限制可能会极大的影响性能。当squid 用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket 被关闭,squid 不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。 在运行./configure 之前,检查你的系统的文件描述符限制是否合适,能给你避免一些麻烦。大多数情况下,1024 个文件描述符足够了。非常忙的cache可能需要4096或更多。在配置文件描述符限制时,我推荐设置系统级限制的数量为每个进程限制的2 倍。 在我们的Linux下运行 CODE
# ulimit -n 1024 很明显1024个file descriptors无法满足VeryCD的访问需求。 重新设置 CODE
# ulimit -HSn 65536 # ulimit -n 65536 然后重新编译安装squid,问题解决。 注: 1. 需要将ulimit -HSn 65536设置在/etc/rc.d/rc.local中,防止重启后失效 2. 我在网上找到的方法,说是还需要重新编译内linux核,但实际尝试后发现不需要 3. 参考url: http://bbs./forum/viewtopic.php?t=562142 http://www./content/fir...ge_ip_squid.htm |
|