2014-12-04 69 views
0

我的系統有時會耗盡內存。每當系統用完堆內存時,我都可以在日誌中看到以下錯誤:jboss-eap-5.1堆內存不足

Maximum number of threads (200) created for connector with address abc.com/192.168.1.45 and port 8080 

任何想法爲什麼會發生這種情況?

回答

0

由於創建了大量的線程,JBoss正在崩潰。當它嘗試創建一個新的應用程序時,應用程序停止響應並開始關閉應用程序服務器。

增加maxThreads參數將解決此問題。逐步做到這一點;提高對maxThreads值太大可能會導致性能問題,例如:

  • 內存佔用率過高
  • 一般緩慢,由於JVM被迫上下文切換 多個線程之間頻繁

要增加maxThreads編輯在JBOSS_EAP_DIST/jboss-as/server/PROFILE/deploy/jbossweb.sar/server.xml

<!-- A HTTP/1.1 Connector on port 8080 --> 
<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}" 
    connectionTimeout="20000" redirectPort="8443" maxThreads="3000" 
    minSpareThreads="2000" maxKeepAliveRequests="-1" /> 

還看到: Performance Tuning Guide - Chapter 2. Connectors

+0

這可能是系統內存不足的原因嗎? – Roshanck 2014-12-04 13:39:35

+0

這不是一個內存問題,而是一個'threadpool'資源問題。您正在耗盡maxthreads。也許在這種情況下'OutOfMemory'異常應該被命名爲OutOfResources。 'threadpool'不能提供你需要的資源。 – 2014-12-04 14:03:44