在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:
- lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
- # lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
- 131 24204
- 57 24244
- 57 24231
- 56 24264
其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
- ps -aef|grep 24204
- mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。(findsun提出的办法比较合理)
分享到:
相关推荐
2. **进程ID(PID)**:每个进程都有一个唯一的标识符,即进程ID,用于区分系统中的不同进程。 3. **进程的资源**:进程可以拥有各种资源,包括内存、文件描述符、句柄、网络套接字、共享内存、信号量等。这些资源...
需要注意的是,在Windows环境下,由于缺乏类似于Linux的`fork`机制,`multiprocessing`库使用另一种方式创建进程,这可能导致文件句柄不能正确地在父进程和子进程之间共享。因此,如果在子进程中尝试访问父进程打开...
Linux环境下安装Oracle数据库是一个涉及多个步骤和技术细节的过程。在Oracle 11g R2的安装中,特别是在Linux操作系统上,需要安装一系列依赖包、配置系统环境变量、创建用户和目录、修改系统配置等关键步骤。以下是...
这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制。 解决高并发TCP连接问题的方法有两个:一个是增加系统对端口...
在IT行业中,"干干净净杀死进程"通常指的是在操作系统层面,通过合适的手段终止一个运行中的程序或进程,同时确保其资源得到适当的释放,不会留下任何残留或导致系统不稳定。这个过程涉及到进程管理、内存管理和资源...
- **调整资源限制**:Oracle数据库运行需要较大的内存和文件句柄资源,因此需要调整`/etc/security/limits.conf`中的相关参数,如`ulimit -n`(最大打开文件数)、`ulimit -u`(最大进程数)等。 - **配置内核参数...
### Linux上安装Oracle11gR2 图形界面安装手册 #### 一、软件环境配置 **系统环境:** - **操作系统:** CentOS 6.8 ...对于任何希望在Linux环境中部署Oracle数据库的人来说,这是一个宝贵的参考指南。
这个参数限制了Linux内核可以分配的最大文件句柄数。当系统频繁出现“文件句柄用尽”的错误时,可能需要增加此限制。在Linux 2.6及更高版本中,即使显示的空闲文件句柄数为0也不必担心,这仅意味着已分配的句柄与...
在Linux 5环境下安装Oracle 10g是一个相对复杂的过程,需要进行一系列的系统准备和配置。以下是对这个过程的详细说明: 1. **系统资源检查**: 在安装Oracle数据库之前,首先需要确保系统满足最低硬件要求。这包括...
在Linux环境下安装Oracle 9i是一项复杂而细致的工作,涉及到多个步骤和系统配置。以下是详细的安装过程和相关知识点: 首先,确保系统环境准备就绪。通过`ifconfig -a | more`命令检查网卡是否正常运行,以及网络...
通过修改`/etc/security/limits.conf`文件,可以设置Oracle用户的最大可打开文件数和最大可拥有进程数。具体操作步骤如下: ```bash vi /etc/security/limits.conf ``` 在文件末尾添加以下行: ``` oracle soft ...
- **利用信号量实现互斥**:可以通过设置信号量初值为1,并使用P、V操作来确保同一时刻只有一个进程能够进入临界区。 #### 25. 如何利用信号量实现同步? - **利用信号量实现同步**:可以通过设置信号量初值为0,...
此外,文件描述符的数量限制也是设计高性能网络服务时需要考虑的因素之一,尤其是在Linux系统中,单个进程能够打开的文件句柄数量通常有一个上限。 5. Python异步网络框架的实现 文档中提到了使用Python实现的异步...
- **文件句柄**:增加每个进程可打开的最大文件句柄数,例如设置为 65535。 - **虚拟内存设置**: - `max_map_count`:增加这个值以支持更多的内存映射,例如设置为 262144。 - `mlockall`:设置为 true 可防止 ...
- 更新系统限制,编辑/etc/security/limits.conf和/etc/pam.d/login文件,以允许更多的进程和打开文件。 - 确保SELinux设置为disabled,以避免安装Oracle时遇到权限问题。 - 检查系统已安装的依赖软件包,如gcc、...
"文件的锁定保护系统 源码"是一个针对这个需求的解决方案,它提供了一种简单易行的方式来确保文件的安全性。下面将详细探讨相关知识点。 1. **文件保护**:文件保护主要是指通过加密、权限设置等方式防止未经授权的...
Oracle 10g在Linux下的安装是一个复杂的过程,涉及到多个步骤和系统配置。在Red Hat Linux(RHEL)5环境下,以下是一些关键知识点和详细步骤: 1. **内存和交换分区**:确保你的系统有足够的内存,至少1GB,同时...
"完全退出程序"这一主题涉及到多个方面的知识,包括程序的生命周期、进程管理、内存管理以及用户界面的交互设计。下面将详细阐述这些相关知识点。 首先,程序的生命周期是指从启动到结束的完整过程。在操作系统中,...
添加如下行,限制oracle用户的进程数(nproc)、打开文件数(nofile)和栈大小(stack): - oracle soft nproc 2047 - oracle hard nproc 16384 - oracle soft nofile 1024 - oracle hard nofile 65536 - oracle ...