限制 某些应用程序需要设置可打开最大文件和 socket 数量(像代理服务器,数据库)。 默认限制通常很低。 1.Linux 每 shell/脚本 shell 的限制是受ulimit 支配的。使用ulimit -a 可查看其状态信息。举个例子,改变可打开最大文件数从 1024 到 10240,可以这么做: # ulimit -n 10240 # 这只在shell中有用 ulimit 命令可以使用在脚本中来更改对此脚本的限制。 每 用户/进程 登录用户和应用程序的限制可以在/etc/security/limits.conf 中配置。举个例子: # cat /etc/security/limits.conf * hard nproc 250 # 限制所有用户进程数 asterisk hard nofile 409600 # 限制应用程序可打开最大文件数 2.系统级 用sysctl来设置内核限制。要使其永久,可以在/etc/sysctl.conf 中进行配置。 # sysctl -a # 显示所有系统限制 # sysctl fs.file-max # 显示系统最大文件打开数 # sysctl fs.file-max=102400 # 更改系统最大文件打开数 # cat /etc/sysctl.conf fs.file-max=102400 # 在 sysctl.conf 中的永久项 # cat /proc/sys/fs/file-nr # 在使用的文件句柄数 3.FreeBSD 每 shell/脚本 在 csh 或 tcsh 中使用limits 命令,在 sh 或 bash 中使用ulimit 命令。 每 用户/进程 在/etc/login.conf 中配置登录后的默认限制。未作限制的值为系统最大限制值。 系统级 内核限制同样使用sysctl 来设置。永久配置,在/etc/sysctl.conf 或/boot/loader.conf 中。其语法与 Linux 相同,只是键值不同。 # sysctl -a # 显示所有系统限制 # sysctl kern.maxfiles=XXXX # 最大文件描述符数 kern.ipc.nmbclusters=32768 # 在 /etc/sysctl.conf 中的永久项 kern.maxfiles=65536 # Squid4 通常用这个值 kern.maxfilesperproc=32768 kern.ipc.somaxconn=8192 # TCP 列队。apache/sendmail 最好用这个值 # sysctl kern.openfiles # 在使用的文件描述符数 # sysctl kern.ipc.numopensockets # 已经开启的 socket 数目 详情请看FreeBSD 手册 11章5。 4.Solaris 在/etc/system 中的下列设置,会提高每个进程可以打开最大文件描述符的数量: set rlim_fd_max = 4096 # 一个进程可以打开文件描述符的"硬"限制 set rlim_fd_cur = 1024 # 一个进程可以打开文件描述符的"软"限制
星期日, 二月 22, 2009
订阅:
博文评论 (Atom)
0 评论:
发表评论