[实践OK]linux ulimit调优之ulimit -S -c 0 > /dev/null。CentOS修改ulimit(最大进程数和最大文件打开数)
一、永久修改 ulimit 限制,需要修改系统配置文件:
编辑 /etc/security/limits.conf 文件
打开 /etc/security/limits.conf 文件并添加以下行:
* soft nofile 20480
* hard nofile 20480
* soft nproc 20480
* hard nproc 20480
hive -nofile 20480
hive -nproc 20480
二、打开 /etc/sysctl.conf 文件并添加或修改以下内容:
fs.file-max = 2097152
文章尾部有更详细的说明。
=================================================
一)/etc/profile里有一行, ulimit -S -c 0 > /dev/null,非Root登录还提示一个:
Last login: Thu Nov 8 10:54:22 2018 from 10.4.12.52
-bash: ulimit: open files: cannot modify limit: Operation not permitted
vi /etc/profile
ulimit -n 204800
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
解释:
系统值65535,用户值65536,内核的值1048576不要动:
一)vi /etc/sysctl.conf
fs.file-max = 65535
二)大数据ELK的需要65536:
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
三)这个不用修改:找到问题了,centos系统设置每个进程的最大打开文件句柄数不能超过1048576。可以通过修改/proc/sys/fs/nr_open加大进程数。
cat /proc/sys/fs/nr_open
1048576
四)/etc/security/limits.d/90-nproc.conf文件尾添加
* soft nproc 204800
* hard nproc 204800
五)/etc/security/limits.d/def.conf文件尾添加
* soft nofile 204800
* hard nofile 204800
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62224
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 204800
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 204800
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
来自:https://blog.csdn.net/yu757371316/article/details/77863173
=========================================================================================
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。
PS:如果你碰到类似的错误提示
ulimit: max user processes: cannot modify limit: 不允许的操作
ulimit: open files: cannot modify limit: 不允许的操作
为啥root用户是可以的?普通用户又会遇到这样的问题?
看一下/etc/security/limits.conf大概就会明白。
linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
超出上限的修改就会出“不允许的操作”这样的错误。
在limits.conf加上
* soft noproc 10240
* hard noproc 10240
* soft nofile 10240
* hard nofile 10240
就是限制了任意用户的最大线程数和文件数为10240。
来源:http://antsw.blog.51cto.com/936097/214997
来自人工智能:
在 CentOS 中,可以通过查看系统的文件句柄数量以及调整 `ulimit` 的软硬限制来管理系统资源。以下是相关步骤:
### 1. **查看当前系统的文件句柄数**
可以使用以下方法查看系统当前打开的文件句柄数量。
#### 1.1 使用 `lsof` 查看所有进程的文件句柄数量
```bash
lsof | wc -l
```
`lsof` 命令列出所有打开的文件,`wc -l` 统计文件句柄数量。这个命令输出的是系统当前所有打开的文件句柄的总数。
#### 1.2 查看单个进程的文件句柄数
如果你只想查看某个进程的文件句柄数,例如 PID 为 1234,可以使用:
```bash
ls /proc/1234/fd | wc -l
```
`/proc/[PID]/fd` 目录包含该进程打开的文件描述符,通过统计这个目录中的文件数量可以得到文件句柄数。
### 2. **查看和修改 `ulimit` 限制**
`ulimit` 用于控制用户或进程的资源使用,包括打开的文件句柄数量(文件描述符)。你可以查看和修改 `ulimit` 的软硬限制。
#### 2.1 查看当前的文件句柄限制
使用 `ulimit` 命令可以查看当前的文件句柄限制:
- 查看软限制(当前会话的限制):
```bash
ulimit -n
```
- 查看硬限制(系统最大允许的限制):
```bash
ulimit -Hn
```
#### 2.2 临时修改文件句柄限制
你可以临时修改当前会话的软硬限制。注意,临时修改只对当前会话有效,重启后会恢复默认值。
- 修改软限制:
```bash
ulimit -Sn [新的软限制值]
```
- 修改硬限制:
```bash
ulimit -Hn [新的硬限制值]
```
例如,设置软限制为 10240,硬限制为 20480:
```bash
ulimit -Sn 10240
ulimit -Hn 20480
```
#### 2.3 永久修改文件句柄限制
为了永久修改 `ulimit` 限制,需要修改系统配置文件:
##### 编辑 `/etc/security/limits.conf` 文件
打开 `/etc/security/limits.conf` 文件并添加以下行:
```bash
* soft nofile 10240
* hard nofile 20480
```
这将把所有用户的软限制设置为 10240,硬限制设置为 20480。你也可以为特定用户或组设置不同的限制。
##### 编辑 `/etc/sysctl.conf` 文件
为了确保系统内核支持更高的文件句柄数,还需要修改内核参数。打开 `/etc/sysctl.conf` 文件并添加或修改以下内容:
```bash
fs.file-max = 2097152
```
然后执行以下命令应用更改:
```bash
sudo sysctl -p
```
##### 编辑 `/etc/pam.d/common-session` 文件
确保 PAM 模块支持读取 `limits.conf`,在 `/etc/pam.d/common-session` 文件中添加以下行:
```bash
session required pam_limits.so
```
### 3. **重启服务或系统**
如果你修改了文件句柄的永久设置,需要重启系统或相关服务以使其生效:
```bash
sudo reboot
```
或针对特定服务:
```bash
sudo systemctl restart [服务名]
```
### 总结
- 使用 `lsof | wc -l` 可以查看当前系统的句柄数。
- `ulimit -n` 查看软限制,`ulimit -Hn` 查看硬限制。
- 临时修改限制使用 `ulimit -Sn` 和 `ulimit -Hn`。
- 永久修改限制需要编辑 `/etc/security/limits.conf`、`/etc/sysctl.conf`,并确保 PAM 模块配置正确。
这样可以有效管理 CentOS 系统中的文件句柄资源。
编辑 /etc/security/limits.conf 文件
打开 /etc/security/limits.conf 文件并添加以下行:
* soft nofile 20480
* hard nofile 20480
* soft nproc 20480
* hard nproc 20480
hive -nofile 20480
hive -nproc 20480
二、打开 /etc/sysctl.conf 文件并添加或修改以下内容:
fs.file-max = 2097152
文章尾部有更详细的说明。
=================================================
一)/etc/profile里有一行, ulimit -S -c 0 > /dev/null,非Root登录还提示一个:
Last login: Thu Nov 8 10:54:22 2018 from 10.4.12.52
-bash: ulimit: open files: cannot modify limit: Operation not permitted
vi /etc/profile
ulimit -n 204800
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
解释:
系统值65535,用户值65536,内核的值1048576不要动:
一)vi /etc/sysctl.conf
fs.file-max = 65535
二)大数据ELK的需要65536:
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
三)这个不用修改:找到问题了,centos系统设置每个进程的最大打开文件句柄数不能超过1048576。可以通过修改/proc/sys/fs/nr_open加大进程数。
cat /proc/sys/fs/nr_open
1048576
四)/etc/security/limits.d/90-nproc.conf文件尾添加
* soft nproc 204800
* hard nproc 204800
五)/etc/security/limits.d/def.conf文件尾添加
* soft nofile 204800
* hard nofile 204800
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62224
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 204800
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 204800
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
来自:https://blog.csdn.net/yu757371316/article/details/77863173
=========================================================================================
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。
PS:如果你碰到类似的错误提示
ulimit: max user processes: cannot modify limit: 不允许的操作
ulimit: open files: cannot modify limit: 不允许的操作
为啥root用户是可以的?普通用户又会遇到这样的问题?
看一下/etc/security/limits.conf大概就会明白。
linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
超出上限的修改就会出“不允许的操作”这样的错误。
在limits.conf加上
* soft noproc 10240
* hard noproc 10240
* soft nofile 10240
* hard nofile 10240
就是限制了任意用户的最大线程数和文件数为10240。
来源:http://antsw.blog.51cto.com/936097/214997
来自人工智能:
在 CentOS 中,可以通过查看系统的文件句柄数量以及调整 `ulimit` 的软硬限制来管理系统资源。以下是相关步骤:
### 1. **查看当前系统的文件句柄数**
可以使用以下方法查看系统当前打开的文件句柄数量。
#### 1.1 使用 `lsof` 查看所有进程的文件句柄数量
```bash
lsof | wc -l
```
`lsof` 命令列出所有打开的文件,`wc -l` 统计文件句柄数量。这个命令输出的是系统当前所有打开的文件句柄的总数。
#### 1.2 查看单个进程的文件句柄数
如果你只想查看某个进程的文件句柄数,例如 PID 为 1234,可以使用:
```bash
ls /proc/1234/fd | wc -l
```
`/proc/[PID]/fd` 目录包含该进程打开的文件描述符,通过统计这个目录中的文件数量可以得到文件句柄数。
### 2. **查看和修改 `ulimit` 限制**
`ulimit` 用于控制用户或进程的资源使用,包括打开的文件句柄数量(文件描述符)。你可以查看和修改 `ulimit` 的软硬限制。
#### 2.1 查看当前的文件句柄限制
使用 `ulimit` 命令可以查看当前的文件句柄限制:
- 查看软限制(当前会话的限制):
```bash
ulimit -n
```
- 查看硬限制(系统最大允许的限制):
```bash
ulimit -Hn
```
#### 2.2 临时修改文件句柄限制
你可以临时修改当前会话的软硬限制。注意,临时修改只对当前会话有效,重启后会恢复默认值。
- 修改软限制:
```bash
ulimit -Sn [新的软限制值]
```
- 修改硬限制:
```bash
ulimit -Hn [新的硬限制值]
```
例如,设置软限制为 10240,硬限制为 20480:
```bash
ulimit -Sn 10240
ulimit -Hn 20480
```
#### 2.3 永久修改文件句柄限制
为了永久修改 `ulimit` 限制,需要修改系统配置文件:
##### 编辑 `/etc/security/limits.conf` 文件
打开 `/etc/security/limits.conf` 文件并添加以下行:
```bash
* soft nofile 10240
* hard nofile 20480
```
这将把所有用户的软限制设置为 10240,硬限制设置为 20480。你也可以为特定用户或组设置不同的限制。
##### 编辑 `/etc/sysctl.conf` 文件
为了确保系统内核支持更高的文件句柄数,还需要修改内核参数。打开 `/etc/sysctl.conf` 文件并添加或修改以下内容:
```bash
fs.file-max = 2097152
```
然后执行以下命令应用更改:
```bash
sudo sysctl -p
```
##### 编辑 `/etc/pam.d/common-session` 文件
确保 PAM 模块支持读取 `limits.conf`,在 `/etc/pam.d/common-session` 文件中添加以下行:
```bash
session required pam_limits.so
```
### 3. **重启服务或系统**
如果你修改了文件句柄的永久设置,需要重启系统或相关服务以使其生效:
```bash
sudo reboot
```
或针对特定服务:
```bash
sudo systemctl restart [服务名]
```
### 总结
- 使用 `lsof | wc -l` 可以查看当前系统的句柄数。
- `ulimit -n` 查看软限制,`ulimit -Hn` 查看硬限制。
- 临时修改限制使用 `ulimit -Sn` 和 `ulimit -Hn`。
- 永久修改限制需要编辑 `/etc/security/limits.conf`、`/etc/sysctl.conf`,并确保 PAM 模块配置正确。
这样可以有效管理 CentOS 系统中的文件句柄资源。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4078/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2024-9-23 23:29
评论列表