IBM-WAS:如何配置webphere以避免OutOfMemoryError?

时间:2017-11-22 06:20:59

标签: java websphere

我们部署的应用程序在websphere服务器上运行缓慢,我们发现WAS日志中有很多OutOfMemoryError消息。

[11/22/17 2:35:27:945 UTC] 00000116 ServletWrappe E
com.ibm.ws.webcontainer.servlet.ServletWrapper service Uncaught
service() exception thrown by servlet action:
java.lang.OutOfMemoryError: Failed to create a thread: retVal
-1073741830, errno 11
    at java.lang.Thread.startImpl(Native Method)
    at java.lang.Thread.start(Thread.java:948)
    at com.sun.jndi.ldap.Connection.<init>(Connection.java:246)
    at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:149)
    at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1626)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2758)
    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:331)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:204)

最近,我们更新了应用程序和WAS,但在此之前,我们从未见过这样的问题。我们使用IBM Content Navigator(ICN)2.0.3创建了我们的应用程序。作为一个图像查看器并进行部署,并将Websphere升级到WAS 8.5.5.12,因此我们无法定义是由ICN图像查看器还是新的WAS修复包引起的问题,但似乎ICN图像查看器更有可能减速系统,因为我们总是用新的fixpacks升级WAS,我们没有看到它们中的任何一个都会导致OutOfMemoryError。

我们在慢性能期间检查了服务器可用空间,我们发现剩下大量内存。我们还将websphere的最大堆大小调整为4096(这非常高),但它仍然无用。目前我们不知道在哪里配置来解决这种低性能问题。请给我们一些建议。

1 个答案:

答案 0 :(得分:0)

找到相同的http://www-01.ibm.com/support/docview.wss?uid=swg21633466

  1. Linux拥有每个用户限制允许的最大进程数,我们可以使用&#34; ulimit -u&#34;命令。如果此值较低(默认值为1024),则将其设置为无限制或将其提高到较高值,例如131072.此部分也会突出显示为&#34;最大用户进程&#34;在&#34; ulimit -a&#34;输出。使用以下命令将其设置为无限制: ulimit -u unlimited

  2. 使用-Xmx选项通过降低Java堆的大小来增加可用的本机内存量。 Java堆未使用的进程地址空间可用于本机堆使用。 Java堆在6个服务的$ TOP / bin / conf / service_mem_settings.ini文件中设置,在后端脚本的$ TOP / bin / conf / env_settings.ini文件中设置为custom_java_options。

  3. 使用&#39; df -k&#39;检查空间要求命令。

  4. 降低使用的线程数。