这个问题只有在squid压力大时才会出现,linux默认的用户最大可开启文件数为1024,而编squid 2.6的版本的话编译时默认参数为max_filedesc 16384,这样在高负债下squid 的性能就会很受影响。所以我们可以用ulimit 命令改一下啊,增大这个数值。
#ulimit -Hn 20480
备注:用-a查询一下是否生效,如果没生效就加上S参数:ulimit -HSn 20480
查看squid具体用了多少文件描述符的方法
#squidclient -p 80 -U manager -W squidstats mgr:info
输出结果中:
File descriptor usage for squid:
Maximum number of file descriptors: 16384
Largest file desc currently in use: 169
Number of file desc currently in use: 132
Files queued for open: 0
Available number of file descriptors: 16252
Reserved number of file descriptors: 100
Store Disk files open: 39
IO loop method: epoll
表示最大的文件描述符为16384,当前使用的最大的文件描述符是169,总共在使用的有132个。
附:ulimit命令的详细介绍
语 法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]
补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。
参 数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆叠大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <程序数目> 用户最多可开启的程序数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。