背景:

我们在开发linux在线server的时候常常会遇会句柄泄露的问题。由于在linux系统设计里面遵循一切都是文件的原则。即磁盘文件、文件夹、网络套接字、磁盘、管道等,全部这些都是文件。在我们进行打开的时候会返回一个fd,即是文件句柄。

假设频繁的打开文件,或者打开网络套接字而忘记释放就会有句柄泄露的现象。在linux系统中对进程能够调用的文件句柄数进行了限制。在默认情况下每一个进程能够调用的最大句柄数是1024个。假设超过了这个限制,进程将无法获取新的句柄,而从导致不能打开新的文件或者网络套接字,对于线上server即会出现服务被拒绝的情况。

查看与改动句柄:

在linux系统中能够通过ulimit–n查看每一个进程限制的最大句柄数,通过ulimit –HSn 10240改动进程的最大句柄数。

当句柄数目达到限制后,就回出现”too many files open”。

查看进程占用的句柄数有几种办法:

1)  通过cat/proc/pid/fd能够查看线程pid号打开的线程;

2)  通过lsof命令, /usr/sbin/lsof-p 21404 命令结果例如以下:

COMMAND   PID      USER   FD   TYPE     DEVICE      SIZE       NODE NAME

vas     21404 root  cwd    DIR        8,3      4096   30195729 /home/users/root/vas

vas     21404 root  rtd    DIR        8,2      4096          2 / 

vas     21404 root  txt    REG        8,3 112201650   30195914 /home/users/root/vas

vas     21404 root  mem    REG        0,0                    0 [heap] (stat: No such file or directory)

vas     21404 root  mem    REG        8,2    105080     339377 /lib64/ld-2.3.4.so

vas     21404 root  mem    REG        8,2   1493186     339367 /lib64/tls/libc-2.3.4.so

vas     21404 root  mem    REG        8,2     17943     339392 /lib64/libdl-2.3.4.so

vas     21404 root  mem    REG        8,2    613297     339369 /lib64/tls/libm-2.3.4.so

vas     21404 root  mem    REG        8,2     79336     490463 /usr/lib64/libz.so.1.2.1.2

COMMAND:进程的名称 

PID:进程标识符 

USER:进程全部者 

FD:文件描写叙述符。应用程序通过文件描写叙述符识别该文件。

如 cwd、txt等 

TYPE:文件类型,如 DIR、REG、IPV4、FIEO等 

DEVICE:指定磁盘的名称 

SIZE:文件的大小 

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

另外通lsof命令也能够查看占用port的进程:

/usr/sbin/lsof-i :9001

linux句柄泄露问题查看的更多相关文章

  1. .NET对象与Windows句柄(三):句柄泄露实例分析

    在上篇文章.NET对象与Windows句柄(二):句柄分类和.NET句柄泄露的例子中,我们有一个句柄泄露的例子.例子中多次创建和Dispose了DataReceiver和DataAnalyzer对象, ...

  2. Linux使用jstat命令查看jvm的GC情况(转)

    B. jstack jstack主要用来查看某个Java进程内的线程堆栈信息.语法格式如下: 1 jstack [option] pid 2 jstack [option] executable co ...

  3. windbg调试实例(4)--句柄泄露

    同事介绍了一篇调试句柄泄露的blog文章,今天有空看了一下,这家伙用视频的方式录下整个调试的过程,学习一目了然,真是有心.鉴于学习的过程总结一下能加深记忆,所以我这里做个记录,感兴趣的朋友可以看这里: ...

  4. Linux使用jstat命令查看jvm的GC情况

    Linux使用jstat命令查看jvm的GC情况 http://www.open-open.com/lib/view/open1390916852007.html http://www.aiuxian ...

  5. .NET对象与Windows句柄(二):句柄分类和.NET句柄泄露的例子

    上一篇文章介绍了句柄的基本概念,也描述了C#中创建文件句柄的过程.我们已经知道句柄代表Windows内部对象,文件对象就是其中一种,但显然系统中还有更多其它类型的对象.本文将简单介绍Windows对象 ...

  6. Linux使用netstat命令查看并发连接数[转]

    转自:http://www.cnblogs.com/wayne173/p/5652043.html Linux使用netstat命令查看并发连接数   我们的网站部署在linux的服务器上,特别是we ...

  7. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

  8. Linux命令 — 设置或查看网络配置命令ifconfig

    ifconfig命令用于设置或查看网络配置,包括IP地址.网络掩码.广播地址等.它是linux系统中,使用频率最高的关于网络方面的命令. 1. 命令介绍 命令格式: ifconfig [interfa ...

  9. 在Linux下用netstat查看网络状态、端口状态

    在Linux下用netstat查看网络状态.端口状态 在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实 ...

随机推荐

  1. CAD参数绘制文字(网页版)

    在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dPosX ...

  2. mybatis generator 覆盖xml文件

    mybatis generator默认采用追加方式生成,所以我们如果要重新生成代码的时候那么要先删除原来的文件. 解决办法: 1:创建一个自定义补丁类. OverwriteXmlPlugin.java ...

  3. 关于OpenMP的归约操作reduction

    这里提一个重要的点 像这样 ; void ff() { sum += 0.5; } //main() #pragma omp parallel for reduction(+:sum) ; i < ...

  4. 关于C/C++的一些思考(3)

    操作符重载函数(Operator Overload Function)的基本概念: 目的是以与对待内置数据类型相同的方式对待用户自定义类型(程序执行速度会受到影响),限制是不能随意选择函数名和参数个数 ...

  5. mybatis保存时将数据库自动生成的主键返回

    场景 保存订单数据和订单详情数据时需要将订单的主键作为关联子段添加到明细表中,需要将保存订单时的主键返回给供保存明细表时使用 添加xml中新增数据时的配置 <insert id="in ...

  6. Java 读取linux上的文件

    今天遇到一个问题,在Windows环境上开发,测试环境和正式环境服务器都是linux: 一个导出表格的功能,在本地没问题,发布到linux服务器就报找不到文件问题,但是模板文件已经在linux下了.刚 ...

  7. Python之面向对象反射

    Python之面向对象反射 isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 ...

  8. Webdriver元素定位3(CSS)

    Selenium极力推荐使用CSS 定位,而不是XPath来定位元素,原因是CSS 定位比XPath 定速度快,语法也更加简洁. CSS常用定位方法 选择器 例子 描述 .class .intro c ...

  9. HDU 4465 递推与double的精确性

    题目大意不多说了 这里用dp[i][0] 代表取完第一个盒子后第二个盒子剩 i 个的概率,对应期望就是dp[i][0] *i dp[i][1] 就代表取完第二个盒子后第一个盒子剩 i 个的概率 dp[ ...

  10. noip模拟赛 数颜色

    分析:高级数据结构学傻了.....一眼看上去觉得是莫队,发现带修改,于是分块,由于写的常数很大,只有70分. 正解很简单,记录下颜色为c的每只兔子的位置,每次二分找这个区间有多少只这种颜色的兔子就可以 ...