1

我在 AIX 操作系统中使用 weblogic 12C。当我在操作系统级别保留 ulimit=unlimited 并在 weblogic的 commEnv.sh 中保留 ulimit=8192 时,我经常收到“打开的文件太多”错误。

但是,当我在操作系统级别保留ulimit=2048并在 weblogic 的commEnv.sh 中保留 ulimit=8192 时,服务器可以正常工作。

请提供以下问题的答案。

  1. weblogic 会覆盖 OS 中的值吗?
  2. 如何计算 ulimit 值。
  3. 是否会发生错误,如果我大幅增加 ulimit 值或者应该对其进行限制。
  4. 其他 ulimit 参数(如堆栈大小、最大内存大小)是否使用文件描述符值适当设置,或者它们是否可以在操作系统级别设置为无限制

我还尝试在操作系统级别使用ulimit=2000部署服务器,并在 weblogic 中禁用 commEnv.sh 中的功能,但我再次收到“打开的文件过多”错误。

4

2 回答 2

2

我对我的 AIX 有点生疏,但听起来你没有正确设置 ulimit。我不相信你可以简单地说“ulimit =”;你需要告诉它你想设置哪个 ulimit。例如,要设置指定进程的最大打开文件描述符数,您可以执行以下操作: ulimit -n 2000

要回答您的具体问题:

  1. 您的默认 ulimit 在 /etc/security/limits 中设置。有软限制和硬限制。软限制是当前设置,而硬限制是可以设置的最大值。话虽如此,只要不超过硬限制,Weblogic 就可以“覆盖”软限制。

  2. 我不确定你在这里问什么。您可以通过运行“ulimit -a”来显示当前的 ulimit 设置

  3. 这实际上取决于您的环境和您在做什么。由于您提出这个问题的原因,将 ulimits 设置为无限制通常是不明智的:如果超出系统资源,您可能会得到不好的结果。我知道像 Oracle 这样的公司会告诉您将所有内容设置为无限制,但在我看来,这是糟糕的系统管理。

  4. 文件描述符值 (-n) 与堆栈大小等完全分开……您是否需要调整其他 ulimits 真的取决于您在做什么。我知道在我们的 WebLogic 环境中,我们确实将最大文件大小 ulimit (-f) 设置为无限制,这违背了我的更好判断,同时对其他限制设置进行了最小更改(如果有)。正如您所提到的,我确实相信我们必须将 nofiles 描述符增加到 2000。

所以回到你更大的问题/问题。听起来您根本没有为 nofiles (-n) 正确设置 ulimit。听起来它需要增加,也许像你说的那样增加到2000。尝试将“ulimit -n 2000”添加到您的 commEnv.sh,但请确保它不超过您的硬限制,否则它将不起作用。

我希望这会有所帮助。

于 2013-07-02T14:37:55.253 回答
0

或者,您可以按照下面的链接在操作系统本身中设置 ulimit 值,这比设置为 ulimit -n 值更强大。

http://www.techpaste.com/2011/07/12/tuning-application-server-file-descriptor-limits/

于 2014-08-15T06:42:22.533 回答