From :http://news.csdn.net/n/20070613/105245.html
在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 把上面命令加到最后
分享到:
相关推荐
其中,H 指定了硬性大小,S 指定了软性大小,n 表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过 4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。 在调整进程句柄数后,系统重启后,设定的值将...
修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...
输出结果包含三个数字,分别表示已分配的文件句柄数、正在使用的文件句柄数和系统文件句柄的最大值。为了永久性地调整这个最大值,需要修改`/etc/sysctl.conf`文件中的`fs.file-max`参数,例如: ```bash fs.file-...
file-nr 文件中包含三个数字:第一个数字表示已经分配了的文件描述符数量,第二个数字表示空闲的文件句柄数量,第三个数字表示能够打开文件句柄的最大值(跟 file-max 一致)。 此外,Linux 系统中还存在 ulimit ...
`ulimit -n`命令用于查看或设置一个用户在单个会话中能打开的最大文件句柄数。值得注意的是,`ulimit`命令对root用户无效,因为root用户不受这些限制的约束,只会影响到普通用户。 为了提升这个限制,需要进行两步...
易语言文件号和文件句柄互转模块源码则提供了具体实现这些功能的方法,它可以帮助开发者更好地理解和操作文件系统,特别是在进行系统级编程时。通过学习和使用这个模块,开发者可以提高其在易语言环境下的文件操作...
设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是
在Linux中,文件描述符(File Descriptor)是句柄的一种具体形式,它是进程用来访问打开文件的一个索引值。每个进程都有一个文件描述符表,包含了所有已打开文件的句柄。文件描述符从0开始,通常0、1、2分别对应标准...
### Linux句柄知识点详解 #### 一、理解Linux句柄 在Linux系统中,“句柄”这个术语并不常见,但根据题目描述中的信息,这里提到的“句柄”可能是指进程标识符或文件描述符等资源标识符。在Linux和其他类Unix系统...
open 函数的返回值是一个整数,如果打开文件成功则返回打开的文件句柄,否则返回 -1。 六、错误代码 open 函数可能会返回以下错误代码: * EEXIST:参数 pathname 所指的文件已存在,却使用了 O_CREAT 和 O_EXCL ...
### Linux 最大打开文件数限制修改方法 #### 前言 在Linux系统中,为了保护系统的稳定性与安全性,每个...以上内容提供了关于Linux最大打开文件数限制修改方法的详细指南,希望能够帮助到需要解决此类问题的读者们。
linux下文件描述符最大限制默认最大为1024,通过 [root@localhost ~]# ulimit -n 1024 这个命令可以查看。此值可以修改。 进程的文件描述符,可以通过 [root@localhost ~]# ls -al /proc/13623/fd |wc -l 59 输出...
最终定位到问题为“Toomanyopenfiles”,即当前用户已达到系统允许的最大同时打开文件数量限制。 #### 四、Linux文件句柄限制机制 在Linux系统中,每个用户可同时打开的文件数量是有上限的。这些文件句柄(也称为...
—查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 —-查看当前进程打开了多少句柄数 # lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more 131 24204 57 24244 57 24231 …….. 其中第一...
例如,要限制所有用户的最大打开文件数,可以在`limits.conf`文件中添加一行`* soft nofile 2048`。这里的`*`代表所有用户,`soft`表示软限制,`nofile`表示文件描述符限制,`2048`是限制的数值。硬限制的设置方法...
该函数可以以各种方式打开文件,并返回打开的文件句柄,-1 表示打开失败。 参数 pathname 指向欲打开的文件路径字符串,可以是相对路径也可以是绝对路径。 flags 参数是一系列常数值,可以同时选择多个常数用按位...
文件表记录了文件的模式、标志、文件句柄(描述符)、iNode指针和读写位置。 5. **文件描述符表**: 这是一个与进程相关的表格,每个进程最多可以打开20个文件。文件描述符是进程访问文件的唯一标识,它指向文件表中...
在Linux内核中打开文件主要通过`filp_open()`函数实现,其原型如下: ```c struct file *filp_open(const char *filename, int open_mode, int mode); ``` - **参数说明**: - `filename`: 需要打开或创建的文件名...