[英]Java cannot create new process: too many open file error
我正在使用以下命令在Java中启动太多进程:
Runtime.getRuntime().exec("java -ja myJar.jar")
当达到约350个进程时,我得到一个IO异常:
Cannot run program "java": java.io.IOException: error=24, Too many open files
Exception in creating process
at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
在每个过程中,我都使用一个数据库连接。 我正在运行ubuntu 32位操作系统。 但是当我跑步时:
ulimit -u
我可以看到流程限制是无限的。 可能是什么问题呢?
问题是您打开的文件太多,正在运行的进程没有太多。 要检查文件限制,请执行以下操作:
ulimit -n
通常为1024。
检查http://www.puschitz.com/TuningLinuxForOracle.shtml并搜索ulimit以获取有关更改此限制的良好说明。
运行350个JVM实例不是正常方法。 您可以在同一JVM中重新设计并运行350个“主线程”吗? 这就是servlet容器的工作方式。 所有Web应用程序都在同一JVM中运行。
PD。 ulimit手册页说,看看最大。 打开的文件是ulimit -n。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.