Linux File descriptor limit

1. Find out what the current open file descriptor limit is.

 

$more /proc/sys/fs/file-max

753825

 or 

 

$sysctl -a | grep fs.file-max

fs.file-max = 753825

2. View how many open file descriptors are currently being used.

 

$more /proc/sys/fs/file-nr

4080    0       753825

3. Edit the kernel paramneter file /etc/sysctl.conf and add line “fs.file-max=[new value]” to it.

vi /etc/sysctl.conf

fs.file-max = 1000000

4. Apply the changes.

sysctl -p

fs.file-max = 331287

 

User Level FD Limits

The above procedure sets system-wide file descriptors (FD) limits. However, you can limit httpd (or any other users) user to specific limits by editing /etc/security/limits.conf file, enter:
# vi /etc/security/limits.conf
Set httpd user soft and hard limits as follows:
httpd soft nofile 4096
httpd hard nofile 10240

Save and close the file. To see limits, enter:
# su - httpd
$ ulimit -Hn
$ ulimit -Sn


http://www.cyberciti.biz/tips/linux-procfs-file-descriptors.html

 

### Linux 文件描述符默认限制及其调整 在Linux系统中,默认的文件描述符限制通常是1024。这一限制是为了保护系统免受资源耗尽的影响,同时也为了确保单个进程不会占用过多的系统资源[^1]。 #### 查看当前文件描述符限制 可以通过`ulimit`命令来查看软限制(soft limit)和硬限制(hard limit)。具体如下: - **软限制**:表示用户或进程可以实际使用的最大文件描述符数。 - **硬限制**:定义了软限制的最大值,只有root用户或具有适当权限的进程才能更改它。 以下是具体的命令: ```bash # 查看软限制 ulimit -Sn # 查看硬限制 ulimit -Hn ``` 如果没有特别配置,上述两个命令返回的结果通常分别为1024和4096[^2]。 --- #### 修改文件描述符限制的方法 ##### 方法一:通过`ulimit`临时修改 可以在终端会话中使用`ulimit`命令动态调整文件描述符限制。例如: ```bash # 设置软限制为8192 ulimit -Sn 8192 # 设置硬限制为16384 ulimit -Hn 16384 ``` 需要注意的是,这种方式仅对当前shell会话有效,在重新登录后将会恢复到原来的限制。 ##### 方法二:永久修改(针对特定用户) 要实现持久化配置,需编辑用户的限制配置文件 `/etc/security/limits.conf` 或创建相应的配置文件于目录 `/etc/security/limits.d/` 下。以下是一个示例配置: ```plaintext * soft nofile 8192 * hard nofile 16384 ``` 其中: - `*` 表示适用于所有用户; - `soft` 和 `hard` 分别对应软限制和硬限制; - `nofile` 是关键字,代表文件描述符的数量。 完成配置后,还需要确保PAM模块启用了`limits`支持。检查并确认 `/etc/pam.d/common-session` 中存在以下行: ```plaintext session required pam_limits.so ``` ##### 方法三:全局系统级别的调整 对于整个系统的文件描述符限制,可通过修改内核参数实现。这涉及编辑 `/proc/sys/fs/file-max` 文件以及 `/etc/sysctl.conf` 配置文件。 1. **增加系统范围内的文件描述符总数** 编辑 `/etc/sysctl.conf` 并添加以下内容: ```plaintext fs.file-max = 100000 ``` 然后执行以下命令使更改生效: ```bash sysctl -p ``` 2. **验证改动** 使用以下命令检查系统范围内允许的最大文件描述符数量: ```bash cat /proc/sys/fs/file-max ``` --- #### 注意事项 当调整文件描述符限制时,应遵循以下原则: - 软限制不应超过硬限制。 - 如果需要更高的硬限制,则可能需要以root身份操作。 - 对于繁忙的服务(如缓存服务),建议将硬限制设置得更高,并将其设为软限制的两倍。 此外,还需注意某些应用程序可能会自行设定其内部的文件描述符限制,因此即使操作系统层面已提高限制,仍需查阅应用文档以确保兼容性[^4]。 --- ### 示例代码片段 以下是一段简单的脚本,用于自动检测并尝试提升文件描述符限制: ```bash #!/bin/bash CURRENT_SOFT=$(ulimit -Sn) CURRENT_HARD=$(ulimit -Hn) if [[ $CURRENT_SOFT -lt 8192 ]]; then echo "Increasing soft file descriptor limit to 8192..." ulimit -Sn 8192 fi if [[ $CURRENT_HARD -lt 16384 ]]; then echo "Increasing hard file descriptor limit to 16384..." ulimit -Hn 16384 fi echo "New limits:" ulimit -Sn && ulimit -Hn ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值