错误现象:
weblogic10.3.6+最新20170117补丁
监视》健康状况、性能、线程
jvm配置为2G时
查看Java 虚拟机内存利用率统计信息内存消耗很快。
然后warning:ThreadPool
has stuck threads,最后挂掉。
配置为8G后,有出现下面问题,但没挂掉:
####<2017-4-1 上午11时12分50秒 CST> <<anonymous>>
<> <> <1491016370522>
####<2017-4-1 上午11时12分50秒 CST> <[STANDBY]
ExecuteThread: '3' for queue: 'weblogic.kernel.Default
(self-tuning)'> <<WLS Kernel>> <> <>
<1491016370553>
####<2017-4-1 上午11时13分30秒 CST> <<anonymous>>
<> <> <1491016410819> <56% of the total memory
in the server is free>
####<2017-4-1 上午11时14分06秒 CST> <<anonymous>>
<> <> <1491016446538>
####<2017-4-1 上午11时14分06秒 CST> <[STANDBY]
ExecuteThread: '16' for queue: 'weblogic.kernel.Default
(self-tuning)'> <<WLS Kernel>> <> <>
<1491016446584>
####<2017-4-1 上午11时14分06秒 CST> <<anonymous>>
<> <> <1491016446663>
####<2017-4-1 上午11时14分06秒 CST> <[STANDBY]
ExecuteThread: '9' for queue: 'weblogic.kernel.Default
(self-tuning)'> <<WLS Kernel>> <> <>
<1491016446694>
####<2017-4-1 上午11时14分07秒 CST> <<anonymous>>
<> <> <1491016447038>
####<2017-4-1 上午11时14分07秒 CST> <[STANDBY]
ExecuteThread: '13' for queue: 'weblogic.kernel.Default
(self-tuning)'> <<WLS Kernel>> <> <>
<1491016447069> out of which "1" are
available and "0" are
unavailable.>
怀疑连接池泄露。
处理数据库监听问题,注释掉红色参数:
oracle@zhengqidb:~/product/11.2.4/db_1/network/admin>
pwd
/home/oracle/product/11.2.4/db_1/network/admin
oracle@zhengqidb:~/product/11.2.4/db_1/network/admin> cat
listener.ora
# listener.ora Network Configuration File:
/home/oracle/product/11.2.4/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhengqidb)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = zqzc)
(ORACLE_HOME = /home/oracle/product/11.2.4/db_1)
(SID_NAME = zqzc)
)
)
ADR_BASE_LISTENER = /home/oracle
DIAG_ADR_ENABLED_LISTENER = OFF
#INBOUND_CONNECT_TIMEOUT_LISTENER=180
oracle@zhengqidb:~/product/11.2.4/db_1/network/admin> cat
sqlnet.ora
DIAG_ADR_ENABLED = OFF
#SQLNET.EXPIRE_TIME=3
#SQLNET.INBOUND_CONNECT_TIMEOUT=180
重启监听:
lsnrctl stop
lsnrctl start
lsnrctl status
政企系统崩溃的原因找到了,是web系统下消息推送这块出了问题。
相关代码位置:
cn.xxxx.beidian.dao.impl.MessageDaoImpl.java中114行
List
参考文档:
http://www.blogjava.net/gf7/archive/2005/08/27/11266.html
1.
如果 JVM
一切都正常(上一步中提到的所有操作),那么此 java OOM
可能是应用程序的问题。应用程序可能在不断泄漏一些
java
内存,而这可能导致出现上述问题。或者,应用程序使用更多的活动对象,因此它需要更多
java
堆内存。在应用程序中可以检查以下方面:
o应用程序中的缓存功能 -
如果应用程序在内存中缓存 java
对象,则应确保此缓存并没有不断增大。对缓存中的对象数应有一个限值。我们可以尝试减少此限值,来观察其是否降低
java
堆使用量。
Java
软引用也可用于数据缓存,当 JVM
用完 java
堆时,可以保证删除软可及对象。
o长期活动对象 -
如果应用程序中有长期活动对象,则可以尝试尽可能减少这些对象的存在期。例如,调整
HTTP
会话超时值将有助于更快地回收空闲会话对象。
o内存泄漏 -
内存泄漏的一个例子是在应用服务器中使用数据库连接池。当使用连接池时,必须在
finally
块中显式关闭 JDBC 语句和结果集对象。这是因为,当从池中调用连接对象上的
close()
时,只是简单地把连接返回池中以供重用,并没有实际关闭连接和关联的语句/结果集对象。
o增加 java
堆 -
如果可能的话,我们也可尝试增加 java
堆,以观察是否能解决问题。
加载中,请稍候......