Chinaunix

标题: 请教Squid编译文件描述符问题! [打印本页]

作者: noagain    时间: 2008-06-17 17:14
标题: 请教Squid编译文件描述符问题!
3.3.1.2 Linux
在Linux上配置文件描述符有点复杂。在编译squid之前,你必须编辑系统include文件中的一个,然后执行一些shell命令。请首先编辑/usr/include/bits/types.h文件,改变_ _FD_SETSIZE 的值:
#define _ _FD_SETSIZE    8192
下一步,使用这个命令增加内核文件描述符的限制:
# echo 8192 > /proc/sys/fs/file-max
最后,增加进程文件描述符的限制,在你即将编译squid的同一个shell里执行:
sh# ulimit -Hn 8192
该命令必须以root运行,仅仅运行在bash shell。不必重启机器。
使用这个技术,你必须在每一次系统启动后执行上述echo和ulimit命令,或者至少在squid启动之前。假如你使用某个rc.d脚本来启动squid,那是一个放置这些命令的好地方

我把ulimit -HSn 65536加入到
/etc/rc.local
启动机器后,以root用户登陆,
ulimit -n
显示仍然为:
1024
但是手动执行ulimit -HSn 65536后
ulimit -n
显示为:
65536

求救各位大牛!!!!!
作者: liuhanzhao    时间: 2008-06-17 21:59
我可以告诉你,实际上在/etc/rc.local启动的这个bash中文件描述符已经是65536了,只是当你用root登录的时候,是会新用一个bash的,环境变量并没有被传递过来,所以在root环境中你ulimit还是1024,有一个验证的好办法,在/etc/rc.local中先加入ulimit -HSn 65536,在他后面加入/opt/squid/sbin/squid -N &,这时你用root用户登录,然后执行/opt/squid/bin/squidclient -p mgr:info,在输出结果中你会看到文件描述符已经是65536了
通常为了防止root登录后文件描述符还是1024,之时手动启动squid,squid的文件描述符沿用1024,我会编辑~/.bash_profile文件,然后将ulimit -HSn 65536加入,这样,当你用root登录后,文件描述符就自动为65536了
今天看了下squid2.7,其中配置文件中多了个max_filedescriptors参数,可以用来设置文件描述符数量,只要设置的数量不超过在编译时--with-maxfd=这个参数的数就行,这样就不需要设置ulimit了

[ 本帖最后由 liuhanzhao 于 2008-6-17 22:13 编辑 ]
作者: pyh    时间: 2008-06-18 00:56
本页有一个相同的帖子回答了你的问题:
http://bbs.chinaunix.net/thread-1160845-1-1.html
作者: noagain    时间: 2008-06-18 10:17
谢谢 两大牛!
作者: xwmhmily    时间: 2008-06-23 19:54
原帖由 liuhanzhao 于 2008-6-17 21:59 发表
我可以告诉你,实际上在/etc/rc.local启动的这个bash中文件描述符已经是65536了,只是当你用root登录的时候,是会新用一个bash的,环境变量并没有被传递过来,所以在root环境中你ulimit还是1024,有一个验证的好 ...



二楼下解.
如果你确定1024不够用的话,在编译Squid的时候加上 --with-maxfd=N,就好了,不需要用ulimit那么麻烦来改.
作者: liuhanzhao    时间: 2008-06-23 21:08
加了那个,如果不用ulimit话,你用squidclient看到的还是1024,不会是你编译的那个




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2