这表明运行 WLS 的 Java 进程使用 884 个句柄,但只有少数(65 个)句柄引用打开的文件。
通过使用上述任一工具,您可以确定应当关闭的文件是否仍处于打开状态。接着,您应当按照下面说明的方式检查如何关闭文件以及如何释放它的文件描述符。
返回页首
如何以及何时发布文件描述符?
文件描述符是在文件关闭或进程终止时被淘汰的。如果 close()
系统调用没有返回失败代码,则为将来要分配文件描述符的 open()
调用提供相关的文件描述符。当与某个打开文件的描述相关联的所有文件描述符已经关闭时,该打开文件的描述会被释放。
您不应当依赖垃圾回收和对象终止功能来释放非 Java 资源(如文件描述符)。这就是为什么应当使用 close()
调用以及在出现错误时处理其输出结果的原因。
已关闭的套接字传输到 TIME_WAIT
以确保所有的数据在连接期间被传输,最终确认 (ACK) 应当终止数据传输,此状态会延迟释放分配给该套接字的文件描述符。在 Unix 系统上,此 TIME_WAIT
期间的持续时间在名为 tcp_time_wait _interval
的内核参数中定义。在 Windows NT、Windows 2000 和 Windows XP 上,此期间在注册表中名为 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
的系统项中定义为 TcpTimedWaitDelay
。
下面的 URL 提供关于 Unix 内核参数的详细说明: http://www.unixadm.net/networking/tune.html
返回页首
已知的 WebLogic Server 问题
增加文件描述符的数量通常将能够解决这种问题,但是您还将需要确保 WebLogic Server 作为一种应用程序不使用过多的文件,还要确保打开的文件能够正确关闭,以便释放文件描述符。
报告给 BEA 客户支持部门的所有问题都与缺少文件描述符或者描述符表溢出有关。此问题总是在操作系统通知 Java 进程不能分配新文件描述符时发生。在这种情况下,您需要增加 fd 的数量。
返回页首
文件描述符和设置
什么是文件描述符?
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文
。
如何创建文件描述符?
进程获取文件描述符最常见的方法是通过本机子例程 open
或 create
获取或者通过从父进程继承。后一种方法允许子进程同样能够访问由父进程使用的文件。文件描述符对于每个进程一般是唯一的。当用 fork
子例程创建某个子进程时,该子进程会获得其父进程所有文件描述符的副本,这些文件描述符在执行 fork
时打开。在由 fcntl、dup
和 dup2
子例程复制或拷贝某个进程时,会发生同样的复制过程。
第二个异常在 JVM 进程缺乏文件描述符时出现(尽管在执行 forkAndExec()
子例程时丆需要新的文件描述符来复制父进程的文件描述符)。对于每个进程,操作系统内核在 u_block
结构中维护文件描述符表,所有的文件描述符都在该表中建立索引。
如何在不同平台上定义文件描述符的数量
文件描述符极限以及可分配给进程的最大大小由资源限制来定义。这些值应当按照在 WebLogic Server 文档中建议的、特定于操作系统的文件描述符值来设置:
对于 WLS 8.1:调整硬件、操作系统和网络性能
对于 WLS 7.0:调整硬件、操作系统和网络性能
对于 WLS 6.1:调整硬件、操作系统和网络性能
Unix 和 Linux 都有文件描述符。 不过,二者的主要区别在于如何设置文件描述符的硬极限值、缺省值和配置过程。
Solaris
/usr/bin/ulimit
实用程序定义允许单个进程使用的文件描述符的数量。它的最大值在 rlim_fd_max
中定义,在缺省情况下,它设置为 65,536。只有 root 用户才能修改这些内核值。
Linux
管理用户可以在 etc/security/limits.conf 配置文件中设置他们的文件描述符极限,如下例所示。
soft nofile 1024
hard nofile 4096
系统级文件描述符极限还可以通过将以下三行添加到 /etc/rc.d/rc.local
启动脚本中来设置:
# Increase system-wide file descriptor limit.
echo 4096 > /proc/sys/fs/file-max
echo 16384 > /proc/sys/fs/inode-max
Windows
在 Windows 操作系统上,文件描述符被称作文件句柄。在 Windows 2000 服务器上,打开文件的句柄极限设置为 16,384。此数量可以在任务管理器的性能摘要中监视。
HP-UX
nfile
定义打开文件的最大数量。此值通常由以下公式来确定:((NPROC*2)+1000)
,其中 NPROC
通常为:((MAXUSERS*5)+64)
。 如果 MAXUSERS
等于 400,则经过计算得到此值为 5128。通常可以将此值设高一些。maxfiles
是每个进程的软文件极限,maxfiles_lim
是每个进程的硬文件极限。
AIX
文件描述符极限在 /etc/security/limits
文件中设置,它的缺省值是 2000。此极限可以通过 ulimit
命令或 setrlimit 子例程来更改。最大大小由 OPEN_MAX
常数来定义。
返回页首
|
相关推荐
解决删除目录提示:System.IO.IOException: 目录不是空的
java.security.InvalidKeyException:illegal Key Size 微信开发过程中,JDK6的版本
如下异常: 2012-12-31 8:59:21 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception java.io.IOException: Stream closed … 百思不得其解,翻出 jsp ...
Eclipse 进行 ANT 时错误 Javadoc failed java.io.IOException Cannot run program javadoc
针对java.io.IOException: entity content is too long [180278508] for the configured buffer limit [157286400]异常,将 DEFAULT_BUFFER_LIMIT修改为150M
本人的一片博客,http://blog.csdn.net/jackieriver/article/details/78882194,所需要的一些插件
it.sauronsoftware.jave.EncoderException: java.io.IOException: Cannot run program "C:\Users\moxiao\AppData\Local\Temp\jave-1\ffmpeg.exe": CreateProcess error=740, 请求的操作需要提升。 在最新的liunx ...
java.io.IOException: Server returned HTTP response code: 403 for URL 处理过程记录 BASIC AUTH2 POST接口,解决403问题
Http-Multipart-Data-Parser-master,如需要http post接口开发、http post传文件等操作可以参考,源码的最原始地址忘记了,这个是从上面down下来新版,各位可参考
复制并覆盖%JAVA_HOME%/jre/lib/security下的local_policy.jar 和 US_export_policy.jar
Android Build 时报错: java.io.IOException: Could not parse XML from android/accounts/annotati...Android构建时报错: app:lintVitalRelease[Fatal Error] :3:214: 与元素类型 “item” 相关联的 “name” ...
Java.io.IOException: The same input jar [E:\Android\myProgram\angel\libs\alipaySdk-20160825.jar] is specified twice. 首先 看一下我项目中关于此jar的配置,我在libs中导入了alipaySdk-20160825.jar,
报错:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.-附件资源
android 二进制xml 解析。AXMLPrinter2反编译的时候报错解决
java安装路径Java\jre\lib\security下替换这两个架包,即可解决 java.security.cert.CertificateException: Unable to initialize, java.io.IOException: Short read of DER length
JSSE(Java Security Socket Extension) 是Sun为了解决在Internet上的实现安全信息传输的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过...
第三个部分是一个文件路径,检查文件(D:\photo.jpg)是否存在,如果存在将文件内容写入D:\test.bin,如果不存在抛出用户自定义异常FNEException对象(此异常类需要你自己定义)。 2.写一段程序读入题1生成的文件D:\test...
1、在上传文件前请在计算机C盘新建一个名为“upload”的文件夹,否则会出现如下异常:java.io.IOException: The temporary upload location [C:\upload] is not valid 2、请不要使用360安全浏览器演示本功能,否则会...
1、在上传文件前请在计算机C盘新建一个名为“upload”的文件夹,否则会出现如下异常:java.io.IOException: The temporary upload location [C:\upload] is not valid 2、请不要使用360安全浏览器演示本功能,否则会...