Browse > Home / 未分类 / Blog article: [命令集]系统相关的限制信息

| 订阅RSS

[命令集]系统相关的限制信息

二月 22nd, 2009 Posted in 未分类

限制
某些应用程序需要设置可打开最大文件和 socket 数量(像代理服务器,数据库)。 默认限制通常很低。

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 			# 限制应用程序可打开最大文件数

系统级

用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。
Solaris
在/etc/system 中的下列设置,会提高每个进程可以打开最大文件描述符的数量:

set rlim_fd_max = 4096 				# 一个进程可以打开文件描述符的"硬"限制
set rlim_fd_cur = 1024 				# 一个进程可以打开文件描述符的"软"限制

Random Posts

Leave a Reply