文件描述符用来限制一个程序能同时打开的文件数目,默认是1024。也就是说,如果不修改文件描述符,那么一个程序只能同时打开1024个文件,而Squid会同时打开成千上万个文件,所以远远是不够的,为了保证最高的效率和响应速度,要更改文件描述符的大小.

首先修改以下两个文件。
#define __FD_SETSIZE 1024
1024改为65536,然后保存,这是Linux能接受的最大数值。

刚才编辑的这两个文件是C/C++程序里面的头文件,编译squid的时候会被自动引用。除了这两个文件以外,我们还需要对当前环境进行设置。也就是你用ssh登录到系统时的一些设定。每个登录进程都可以进行单独的设置,当关闭目前登录回话,环境变量的设置就失效了.

ulimit用来设置当前环境的一些资源限制。这个命令是对环境进行设置,所以退出当前登录进程后命令将会失效。
我们输入下面的命令
#ulimit -Hs 65536
#ulimit -n 65536
也可以永久修改这些限制,开机自动生效,配置如下:
vi /etc/security/limits.conf,添加以下内容
*        soft  nofile     65536 
*        hard  nofile     65536
H参数是硬性限制,s是堆栈上限,n是文件描述符上限。

注释:
ulimit 参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes