通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值。那么应该在哪里设置呢?
最正确的做法是在/etc/security/limits.conf里设置:
- [root@localhost security]# 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) 30518
- max locked memory (kbytes, -l) 64
- max memory size (kbytes, -m) unlimited
- open files (-n) 1024
- pipe size (512 bytes, -p) 8
- POSIX message queues (bytes, -q) 819200
- real-time priority (-r) 0
- stack size (kbytes, -s) 10240
- cpu time (seconds, -t) unlimited
- max user processes (-u) 1024
- virtual memory (kbytes, -v) unlimited
- file locks (-x) unlimited
- [root@localhost security]# ulimit -n 10240
- [root@localhost security]# 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) 30518
- max locked memory (kbytes, -l) 64
- max memory size (kbytes, -m) unlimited
- open files (-n) 10240
- pipe size (512 bytes, -p) 8
- POSIX message queues (bytes, -q) 819200
- real-time priority (-r) 0
- stack size (kbytes, -s) 10240
- cpu time (seconds, -t) unlimited
- max user processes (-u) 1024
- virtual memory (kbytes, -v) unlimited
- file locks (-x) unlimited
- [root@localhost security]#
- </font></font></font></font>
命 令:ulimit
功 能:控制shell程序的资源
语 法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大 小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆栈大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]
补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。
参 数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可打开的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆栈大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <进程数目> 用户最多可启动的进程数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
2. 系统调优
如前所述, 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 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1) 解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
2) 让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
3) 修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
/**************************************
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
1) /etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2) /etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外确保/etc/pam.d/system-auth文件有下面内容
session required /lib/security/$ISA/pam_limits.so
这一行确保系统会执行这个限制。
***********
3) 一般用户的.bash_profile
#ulimit -n 1024
重新登陆ok
3. /proc目录:
1)/proc目录里面包括很多系统当前状态的参数,例如:引用
/proc/sys/fs/file-max
/proc/sys/fs/inode-max
是对整个系统的限制,并不是针对用户的;
2)proc目录中的值可以进行动态的设置,若希望永久生效,可以修改/etc/sysctl.conf文件,并使用下面的命令确认:
# sysctl -p
例如增加:
引用
fs.file-max=xxx
fs.inode-max=xxx
相关推荐
在 Linux 系统中,进程句柄数设置是一个重要的参数,它决定了单个进程能够打开的最大文件句柄数量,包括 socket 连接。系统默认值为 1024,这对于一般的应用来说已经足够使用。但是,对于需要处理大量请求的应用,如...
总结一下,修改MySQL的最大连接数涉及调整`max_connections`和`open_files_limit`配置参数,并可能需要在操作系统层面进行额外的设置。这些调整需要谨慎操作,以免影响系统的稳定性和安全性。同时,定期检查和监控...
因此,系统对用户进程可打开文件数量的限制直接影响了最大并发Socket连接数。默认情况下,这个限制通常是1024,可以通过`ulimit -n`命令查看。若要增加这个限制,可以使用`ulimit -n <number>`命令,但需要注意,这...
本文将深入探讨如何获取和修改Linux Socket的最大连接数,以及其背后的系统原理。 首先,我们需要了解`/proc/sys/net/core/somaxconn`这个系统文件,它是用来设置监听队列的最大长度,即TCP连接请求的最大等待队列...
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序,可以通过使用 `ulimit -n` 命令来修改每个进程可打开的文件数,例如将每个进程可以打开的文件数目加大到 4096:`ulimit -n 4096`。 此外,还可以...
### Linux中高并发Socket最大连接数的优化详解 在Linux环境下进行网络编程时,经常会遇到高并发场景下Socket连接数的限制问题。本篇文章将详细阐述如何针对这一问题进行优化,帮助开发者更好地理解和掌握相关技术。...
`ulimit -n`命令可以查看和修改这个限制,增加这个值可以允许更多的并发连接。 2. **Socket缓冲区大小**:每个TCP连接都有发送和接收缓冲区,增大这些缓冲区可以容纳更多数据,从而支持更多连接。 3. **进程/线程...
TCP/IP并发连接数修改是网络优化的一个重要环节,特别是在进行大规模网络扫描或高并发网络应用时,可能会遇到TCP并发连接数限制导致的问题。这通常是因为操作系统为了防止恶意攻击或者资源过度消耗,对单个进程或...
本文讨论了 Nginx 访问慢和 accept() failed 错误的解决方案,包括临时修改 ulimit 值、永久修改 ulimit 值、修改 nginx.conf 文件、影响 MySQL 并发连接数等方法。通过这些方法,可以解决 Nginx 连接过多的问题,...
通过`ulimit -n`命令可以查看当前用户的最大同时打开文件数。例如,默认情况下大多数Linux发行版将此值设置为1024。 ##### 5.2 修改用户级最大文件数限制 可以临时增加此限制,如`ulimit -n 50000`。但这仅对当前...
修改用户进程可打开文件数限制可以通过 ulimit 命令来实现。ulimit 命令可以查看和设置用户进程可打开文件数限制。例如,使用以下命令可以查看当前用户进程可打开文件数限制: [speng@as4 ~]$ ulimit -n 这将显示...
在Linux中,可以通过`ulimit -n`命令来查看当前用户的进程可打开文件句柄的最大数量。例如,执行`ulimit -n`后显示的结果为1024,这意味着该用户的每个进程最多可以打开1024个文件。考虑到标准输入、标准输出、标准...
"数据库连接数和连接池" 数据库连接数是指系统中可以同时存在的连接数量,而连接池则是为了解决频繁的数据库连接创建和销毁问题的技术。下面我们来详细了解这两个概念。 数据库连接数的限制: 在了解数据库连接数...
- 使用`ulimit -n`命令可以查看当前用户最大TCP连接数。默认值可能不足以应对高并发场景。通过`ulimit -n <file_num>`可以设置单个进程的最大打开文件数。如果权限不足,需要修改`/etc/security/limits.conf`和`/...
系统的最大进程数和最大文件打开数限制: vi /etc/security/limits.conf # 添加如下的行 * soft noproc 65535 * hard noproc 65525 * soft nofile 1000000 * hard nofile 1000000 说明:* 代表针对所有用户 noproc ...
- 设置Oracle用户的最大进程数和文件句柄数。 - `oracle soft nproc 2047` - `oracle hard nproc 16384` - `oracle soft nofile 1024` - `oracle hard nofile 65536` 3. **修改 `/etc/pam.d/login` 文件**: ...
修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...
通过运行 `show variables like "max_connections"`,你可以验证当前的最大连接数是否已更改为2000或其他你设定的值。 总之,解决CentOS 7中MySQL连接数限制的问题,关键在于理解这个限制是由系统级别的文件描述符...