解决打开文件过多的问题

解决打开文件过多的问题

ID:30902194

大小:57.50 KB

页数:7页

时间:2019-01-04

解决打开文件过多的问题_第1页
解决打开文件过多的问题_第2页
解决打开文件过多的问题_第3页
解决打开文件过多的问题_第4页
解决打开文件过多的问题_第5页
资源描述:

《解决打开文件过多的问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、解决打开文件过多的问题无论文件类型是socket述是pipe,文件描述符对于标志不同类型的打开文件的进程来说是唯一的。当操作系统运行岀现文件标志描述符不足时,就会抛出打开文件过多的异常。然而,文件描述符溢出则是更为复杂的问题的征兆,表明与这些文件相关联的资源没有正确被维护。让我们来看看如何诊断导致诸如此类杲常的问题:java.net.SocketException:Toomanyopenfilesatjava.net.PlainSocketTmpl.accept(CompiledCode)atjava.net.ServerSocket.implA

2、ccept(CompiledCode)atjava・net・ServerSocket・accept(CompiledCode)atwcbiogic.t3・srvr.ListenThrcad・run(CompiledCode)和诸如此类的异常:java.io.IOException:Toomanyopenfilesatjava.lang.UNIXProcess•forkAndExec(NativeMethod)atjava.lang.UNIXProcess.(UNIXProcess.java:54)atjava•lang.UNIXProcess•f

3、orkAndExec(NativeMethod)atjava.lang.UNIXProcess.(UNIXProcess.java:54)atjava.lang.Runtime.execlnternal(NativeMethod)atjava•lang.Runtime•exec(Runtime•java:551)atjava.lang.Runtime.exec(Runtime.java:477)atjava•lang.Runtime.exec(Runtime.java:443)I第一个异常在错误影响到底层的TCP协议时抛出,而第二个异常则在错误影

4、响到I/O操作吋抛出。这两个异常都是出现阻塞服务器的类似问题的征兆。该问题可通过下面的研究方法來解决。第二个界常在JVM进程缺乏文件描述符时出现(尽管在执行forkAndExec()子例程时需要新的文件描述符来复制父进程的文件描述符)。对于每个进程,操作系统内核在u_block结构中维护文件描述符表,所有的文件描述符都在该表中建立索引。让我们从复习文件描述符开始。文件描述符是由无符号整数表示的句柄,进程使用它來标识打开的文件。文件描述符与包括和关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对彖相关联,这些信息被称作文件的上下文

5、。进程获取文件描述符最常见的方法是通过本机子例程open或create获取或者通过从父进程继承。后一种方法允许了进程同样能够访问由父进程使川的文件。文件描述符对于每个进程一般是唯-的。当卅fork子例程创建某个子进程时,该子进程会获得其父进程所有文件描述符的副本,这些文件描述符在执行fork时打开。在由fcntl>dup和dup2子例程复制或拷贝某个进程时,会发生同样的复制过程。如果数最下降,我们应该增加文件描述符的最人数量,以防止问题重复出现。这种变化可以与减少连接在断开Z前保持TTMEJVATT状态的时间长度结合在一起。在繁忙的服务器上,24

6、0秒的默认值可以延迟其他连接的尝试,因此也限制了连接的最大数量。如果数量持续上升,我们应该确定是否冇一些描述符的处理时间过t(文件没冇被止确关闭),以及是否创建了过多的文件(例如,驱动程序库不断为每个新的JDBC连接加载文件)。加载JAR文件也可以减少使用的文件描述符的数量。每个JAR文件都使用一个描述符。即使要对每个单一类都使用同一描述符,也必须对每个单一•类单独加载。监视描述符我们可以使用不同的技术,来监控和诊断一•个进程是如何使用所有描述符的,不同的技术取决于不同的操作系统。Unix平台:在诸多工具中,lsof(LiStOpenFiles)

7、Unix管理工具显示有关打开文件和网络文件描述符的信息,包括它们的类型、人小和-节点。对于特定的进程,其语法如F所示:lsof-p示例1:以下命令在Solaris2.7启动WebLogicServer8.1SP1后立即执行。它表明运行服务器的Java进程(PTD390)分配了84个文件描述符,此数量远小于文件描述符缺省的硬极限。-p390

8、wc-184这个数字远远低于文件描述符的默认硬极限。在异常出现之示可以执行此命令,以确保此Java进程达到了打开文件的最大数屋。这将确认该进程缺乏文件描述符。然后我们可以运行:-p<

9、pid>并将输出结果重定向到某个文件以检杳打开的每个文件。如果某个应当关闭的文件却出现在列表屮,您可以探杏此文件以前没有按照预期方式关闭

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。