首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从java设置ulimit -n

从java设置ulimit -n
EN

Stack Overflow用户
提问于 2019-03-11 09:57:49
回答 2查看 1.7K关注 0票数 1

我正在尝试设置我的java程序运行的ulimit。目前看来,ulimit -n被设置为4096,因为当我运行这段代码(这是我的java程序的一部分)时,它会输出4096。

代码语言:javascript
复制
ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", "ulimit -n");
try {
  Process process = processBuilder.start();
  // Prints 4096.
  LOGGER_.info(getStringFromInputStream(process.getInputStream()));
} catch (IOException e) {
  // The flow does not reach this catch block.
  LOGGER_.error("exception caught: " + e.getMessage());
}

有可能把它改成别的东西吗,比如说8192?我试过这个:

代码语言:javascript
复制
ProcessBuilder processBuilder2 = new ProcessBuilder("/bin/bash", "-c", "ulimit -n 8192");
try {
  Process process = processBuilder2.start();
  LOGGER_.error("starting agent2...");
  LOGGER_.error(getStringFromInputStream(process.getInputStream()));
} catch (IOException e) {
  LOGGER_.error("exception caught2: " + e.getMessage());
}

代码语言:javascript
复制
try {
  String[] cmdString = new String[3];
  cmdString[0] = "/bin/bash";
  cmdString[1] = "-c";
  cmdString[2] = "ulimit -n 8192";
  Process process = Runtime.getRuntime().exec(cmdString);
  LOGGER_.error(getStringFromInputStream(process.getInputStream()));
} catch (IOException e) {
  LOGGER_.error("exception caught:" + e.getMessage());
}

但我不知道这是否正确的做法。另外,如果ulimit -n是否正在被修改。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-11 17:06:32

ulimit命令更新当前进程和所有继承进程的限制。当您使用ulimitRuntime.exec调用ProcessBuilder时,它将启动一个新进程并更新这个新进程的限制,而不会对当前的ProcessBuilder进程产生任何影响。

为了对自身应用新的限制,Java应该在自己的上下文中调用setrlimit函数。因为这个函数没有Java包装器,所以只能通过本机接口JNI、JNA或JNR调用它。

但是,如果Java在非特权用户下运行,那么无论如何更新文件限制(ulimit -n)都是无用的,因为HotSpot会自动将这个限制更新为最大允许值--参见this question

票数 1
EN

Stack Overflow用户

发布于 2019-04-13 16:35:28

我做了个有效的解决办法。我使用了一个执行java程序的shell脚本。因此,在shell脚本执行运行中的-java部分之前,我设置了ulimit。正如@apangin所回答的,这个设置了shell进程和从这个shell进程派生出来的java进程的ulimit,继承了这个ulimit。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55099287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档