在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用户运行以下命令:ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后
分享到:
相关推荐
个人觉得最好不要超过 4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。 在调整进程句柄数后,系统重启后,设定的值将会恢复默认值。如果想永久保存下来,可以修改 .bash_profile 文件或 /etc/profile 文件,将...
修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...
linux 系统级别的能够打开的文件句柄的数file-max命令 Linux 系统中,file-max 命令用于设置系统级别的能够打开的文件句柄的数量,这个值决定了 Linux 内核可以分配的文件句柄的最大数量。当系统中的文件句柄数量...
输出结果包含三个数字,分别表示已分配的文件句柄数、正在使用的文件句柄数和系统文件句柄的最大值。为了永久性地调整这个最大值,需要修改`/etc/sysctl.conf`文件中的`fs.file-max`参数,例如: ```bash fs.file-...
`ulimit -n`命令用于查看或设置一个用户在单个会话中能打开的最大文件句柄数。值得注意的是,`ulimit`命令对root用户无效,因为root用户不受这些限制的约束,只会影响到普通用户。 为了提升这个限制,需要进行两步...
Linux系统通过限制同一时间打开的最大文件数来控制资源的使用,这个限制可以通过`ulimit`命令或者修改`/etc/security/limits.conf`配置文件来调整。同时,每个进程都有一个文件描述符的上限,超过这个上限,进程将...
在Linux和其他类Unix系统中,句柄通常用来标识一个打开的文件或其他系统资源。 #### 二、Linux进程标识符 1. **PID(Process ID)**: - PID是进程标识符,每个运行中的进程都有一个唯一的PID。 - PID由内核分配...
在IT行业中,尤其是在系统编程和低级操作中,文件号(File Number)和文件句柄(File Handle)是两个重要的概念。它们都是操作系统用来标识和管理文件的方式,但使用方式和场景有所不同。本文将深入探讨这两个概念,...
设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是
linux下文件描述符最大限制默认最大为1024,通过 [root@localhost ~]# ulimit -n 1024 这个命令可以查看。此值可以修改。 进程的文件描述符,可以通过 [root@localhost ~]# ls -al /proc/13623/fd |wc -l 59 输出...
然而,在一些特定的应用场景下,如高性能服务器、大数据处理或高并发应用中,可能需要更高的文件句柄数来满足业务需求。因此,了解如何调整这一限制变得尤为重要。 #### 背景知识 在深入探讨如何修改最大打开文件...
这些文件句柄(也称为文件描述符)用于跟踪每个打开的文件或网络连接等资源。 ##### 4.1 查看系统全局最大文件数限制 使用`cat /proc/sys/fs/file-max`命令可以查看当前系统全局的文件打开数量限制。 ##### 4.2 ...
—查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 —-查看当前进程打开了多少句柄数 # lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more 131 24204 57 24244 57 24231 …….. 其中第一...
open 函数的返回值是一个整数,如果打开文件成功则返回打开的文件句柄,否则返回 -1。 六、错误代码 open 函数可能会返回以下错误代码: * EEXIST:参数 pathname 所指的文件已存在,却使用了 O_CREAT 和 O_EXCL ...
文件表记录了文件的模式、标志、文件句柄(描述符)、iNode指针和读写位置。 5. **文件描述符表**: 这是一个与进程相关的表格,每个进程最多可以打开20个文件。文件描述符是进程访问文件的唯一标识,它指向文件表中...
- `filp`: 通过`filp_open()`获取的文件句柄。 - `id`: 通常传入`NULL`或当前进程的文件描述符表标识`current->files`。 ### 结论 在Linux内核中进行文件操作需要谨慎处理,确保使用的API正确无误,并且遵循内核...
文件句柄是操作系统为每一个打开的文件分配的唯一标识,它存储在主内存的一个特定区域,这个区域的大小决定了系统能同时处理多少个文件。由于操作系统需要内存来管理这些句柄,因此对打开文件数量的限制是为了防止...
例如,如果结果显示为12158,则表示系统目前的最大文件句柄数为12158。 - 如果需要增加系统级硬限制,可以在`/etc/rc.local`脚本中添加以下内容: ```bash echo 22158 > /proc/sys/fs/file-max ``` 4. **解决...