在一次生产环境上,用户那边反馈服务连接redis异常,经过查看redis的日志,报打开文件数过多,通过lsof去查看文件句柄数确实超过了主机限制的句柄数,只能先重启redis进行释放连接数,进行恢复业务。
上面是一个处理过程,但是后面和对方人员关于程序是否是打开那么多文件句柄数,产生分歧,对方认为一个进程打开的文件句柄数量可以使用,如下命令进行统计:

ls -l /proc/pid1/fd/ | wc -l 进行统计

为此,我到自己环境上验证一番,给予解释,争吵是解决不了问题,唯有真理服人了,首先到主机上找个postgress的进程: 然后根据进程 1866 查看文件描述符数:
lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more 如上图,我是先lsof查看的内容追加到text.txt文件,通过图中可以看到进程是1886的服务打开的句柄数是36。

最后通过对方提供的查询方式,进行查看,如下:
如图所示,通过查看进程1866/fd的数量为9,这样就会有人有疑问,为啥lsof查看的句柄数是36,这里查看的/proc/1866/fd 下面的数量为9呢? 这是一个疑问。
还有一个疑问就是为啥我lsof查看的内容追加到text.txt文件中,在去重取1866进程的fd是17 ,而不是在/proc/1866/fd查看的9 。

针对上面两个疑问,这里一并解答,首先需要解释下fd,lsof命令查看的fd部分,表示的是文件描述符,体现服务当前的一些状态。
如:cwd表示这是该应用程序启动的目录,u表示文件处于读写情况下,r代表文件处于读的情况下。而/proc/1866/fd 下面的9是因为它只记录1866这个进程只记录读写执行文件这种状态 ,不会记录MEM,TXT这种的,所以看到lsof统计的fd部分的数量是17,只记录了ou-8u数量就是9了。

lsof是用来统计当前节点主机所有进程打开的文件数和对应的文件描述符。

/proc/pid/fd 会记录服务的进程的pid,在对应的fd下保存着这个服务对文件执行读写操作的文件描述符存在状态

文件句柄查找需要用如下命令:

第一列 记录的是系统已经使用的文件句柄数,第三列是系统总 共限制使用的句柄数。

注: 文件描述符和文件句柄是两个不同的概念,他们之间只有相互联系的关系,多个文件描述符可能对应一个文件句柄。比如我有两个程序的进程打开的同一文件状态不一样,一个进程对这个文件进行写的操作,另外一个进程进行读的操作,这样就产生了两个文件描述符和一个文件句柄。

关于文件句柄数和文件描述符的区分相关推荐

  1. Linux网络编程--文件描述符

    文件描述符 在Unix和Unix-like操作系统中,文件描述符(file descriptor, FD)是一个文件或者像pipe或者network socket等之类的输入/输出源的唯一标识. 文件 ...

  2. 文件句柄?文件描述符?傻傻分不清楚

    概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无所知,那么debug起来将会异常痛苦.在li ...

  3. 文件句柄(file handles) 文件描述符(file descriptors)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  4. 查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等...

    一.修改最大连接数 1.查看当前文件描述符的限制数目的命令: ulimit -n 2.修改文件描述符的限制数目 2.1 临时改变当前会话: ulimit -n 65536 2.2 永久变更需要下面两个 ...

  5. 查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等

    一.修改最大连接数 1.查看当前文件描述符的限制数目的命令: ulimit -n 2.修改文件描述符的限制数目 2.1 临时改变当前会话: ulimit -n 65536 2.2 永久变更需要下面两个 ...

  6. linux进程文件描述符 vnode,Linux C编程详解:进程原理分析、文件描述符和文件记录表、文件句柄和文件原理...

    一.引言 文件操作是Linux C编程中其中的一项核心技术,实际上也相当重要,这里并不是说狭义上的那种文件操作,它也非常有助于理解和学习Linux系统.为什么这样说呢?因为在Unix/Linux的世界 ...

  7. Linux最大打开文件描述符数

    1.    系统最大打开文件描述符数:/proc/sys/fs/file-max a.    查看 $ cat /proc/sys/fs/file-max 186405 2. 设置 a.    临时性 ...

  8. linux修改文件描述符,linux最大允许的文件描述符open files数nofile修改

    open file resource limit 是linux中process可以打开的文件句柄数量.增加这个数值需要调整两个配置: 第一步, 修改系统最大允许的文件描述符 查看当前的设置: $ ca ...

  9. jq fileupload 设置最大文件大小5m_如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 | Linux 中国...

    在生产环境中遇到打开文件数这类的挑战如今已是司空见惯的事情了.-- Shashidhar Soppin 
简介:在生产环境中遇到打开文件数这类的挑战如今已是司空见惯的事情了.因为许多应用程序是基于 J ...

最新文章

  1. ubuntu16.06+vsftpd+nginx搭建图片服务器
  2. php-Arrays函数-array_flip-交换数组的键值
  3. 1064 Complete Binary Search Tree (30 分)【难度: 一般 / 知识点: 完全二叉搜索树】
  4. ROS+Turtlebot3+RVIZ 显示机器人历史轨迹方法
  5. 移动 Web 设计中的一些错误理念
  6. 图文详解linux/windows mysql忘记root密码解决方案
  7. TCP/IP文档阅读笔记-TCP Receive Window
  8. SpringMVC拦截器工作流程图
  9. 计算机基础知识教程 百度,28、如何上网--电脑基础知识
  10. Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka
  11. iostream stdlib fstream io.h 头文件的作用
  12. php开发经典问题,PHP开发常见问题集锦(一)
  13. java unit scanner_Java输入输出常用类Scanner
  14. ipa安装失败,以及安装办法
  15. Linux虚拟机之间如何添加互信
  16. Java实现四则运算
  17. 高通QCS603/QCS605物联网系统芯片介绍,QCS603/QCS605处理器参数比较
  18. 漏斗模型-数据分析师的必备神器
  19. 使用validate注解做校验以及自定义validate注解
  20. RFID危化品管理系统解决方案

热门文章

  1. 74%的人都在加班!职场人病痛排行榜出炉!
  2. 54家半导体芯片原厂涨价、调价及交期变动通知函!
  3. cad偏移后自动变色lisp_高手帮忙修改,批量偏移 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  4. 学生信息管理系统中系统登录问题
  5. scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...
  6. 数据可视化项目(二)
  7. rec卡刷root吗,卡刷需要root权限吗
  8. Memcached分布式算法
  9. 什么是金手指,金手指的设计要求有哪些?
  10. 【Python小程序】隐藏表白图:“你永远都不知道我喜欢你”(建议保存)