命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。

对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files

open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:

-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 -H

命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many filesopen”的错误提示。如何知道当前进程打开了多少个文件句...
修改 文件 句柄 数在 Linux 下,我们使用ulimit -n 命令可以看到单个 进程 能够 打开 最大 文件 句柄 数量(socket连接也算在里面)。系统默认 1024。 对于一般的应用来说(象Apache、系统 进程 )1024完全足够使用。但是如何象squid、mysql、java等单 进程 处理大量请求的应用来说就有 点捉襟见肘了。如果单个 进程 打开 文件 句柄 数量超过了系统定义的 ,就会提到“too many files open”的错误提示。如何知道当前 进程 打开 了多少个 文件 句柄 呢?下面一段小脚本可以帮你查看: 1.lsof -n |awk ‘{print $2}’|sort|uniq -c |sort -nr
Linux 进程 数和 句柄 数 由于业务的需要,我们在阿里云上面申请了30多台主机,安装的是centos7.2.1511系统。一般情况下,我们需要对 文件 句柄 数、 进程 数等做一些标准化的配置。 2. 进程 句柄 的概念 一个 程序 可能 打开 多个 进程 一个 进程 在运行中会 打开 很多资源,如 文件 file、通讯连接socket、正在监听的端口等,我们都统称为 句柄 (handle)。 linux 任何东西都是 文件 ,所以...
为了以另一种顺序从 句柄 中获取 或同时从 多个 句柄 中获取 多个 ,我创建了 一个 非常方便的函数来扩展 GET 函数的能力。 多输入: hObjects - 对象 句柄 数组 - 是必须的。 可选的: 属性 - 属性的单元格数组 - 每个单元格都可以容纳不仅仅是从 hObjects 中的每个对象中提取的属性。 默认 :properties={'position' 'position' ... } 在相同大小的 hObjects 索引 - 对于 多个 属性,必须与“属性”单元格大小相同。 MULTIGET 按输入到输入的顺序返回 元胞数组例子: 对于它的所有操作,其行为与 get 相同。 h =数字c=multiget(h) c = multiget(h,{'position','PaperSize'}) 可以从向量中提取某些 (这就是我构建函数的原因) c=multiget(a,{'position'}
可以根据ID号来查看 进程 名。 # ps aef|grep 24204 nginx  24204 24162 99 16:15 ?  00:24:25 /usr/local/nginx/sbin/nginx -s Linux 有硬性限制和软性限制。可以通
Linux 系统 文件 句柄 数一. 写在之前二. 问题阐述三. 产生的原因四. 经典案例五. 解决方案 一. 写在之前 本篇博客为转载内容,原博客:https://www.cnblogs.com/feng0815/p/8620564.html 曾经项目部署实施时,未更改 文件 句柄 数,项目部署后,功能验证无问题。当线上使用时,数据访问量增加,系统无法使用,日志显示:too many open files。 二. 问题阐述 too many open files:顾名思义即 打开 过多 文件 数。 不过这里的files不单是文
相信很多同学都听说过 句柄 ,也看过一些对 句柄 的解释。但是 句柄 到底是什么?他是怎么工作的,可能真正能回答出来的人不多,今天我们借助resip协议栈对 句柄 的实现来详细聊聊 句柄 。 首先作为 句柄 它最重要的功能就是能唯一指定 一个 内存对象,注意这里是“指定”,不是c++指针的“指向”。那 句柄 要怎么才能做到唯一指定 一个 内存对象呢? 想象一下,如果 一个 类A中有 一个 成员变量id(通过特定机制保证类A的 多个 变量拥有...
要在 Linux 中修改 文件 句柄 数,可以使用ulimit命令。该命令用于设置或显示 进程 资源限制,包括 文件 句柄 数。可以使用以下命令来修改 文件 句柄 数: ulimit -n <number> 其中,<number>是要设置的 文件 句柄 数。例如,要将 文件 句柄 数设 置为1024,可以使用以下命令: ulimit -n 1024 请注意,此更改仅适用于当前会话。如果您希望永久更改 文件 句柄 数,请将ulimit命令添加到您的shell配置 文件 中(例如,~/.bashrc或~/.zshrc)。