加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

weblogic总宕机out of which "1" are available and &q

(2017-04-01 13:52:49)
分类: oracle
错误现象:
weblogic10.3.6+最新20170117补丁
weblogic启动不久,查看主页 >JDBC 数据源概要 >zqzc >服务器概要 >cgServer
监视》健康状况、性能、线程
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.java114

List> results = Share.iDb().getJdbcTemplate().queryForList(sqlSb.toString());

它执行如下SQLselect count(*)

  from t_prompt tp, tpr_users tu

wheretp.receiver_number = tu.fldname

   and tp.is_read_account = '0'】,

 

 

问题处:下面这个判断没有按用户过滤,把所有所有推送消息都读出来了。

 

//判断参数是否为空,不为空时,sql语句增加用户id条件

if(inParam != null){

                                          sqlSb.append(" and receiver_number = '").append(user.getLoginName()).append("'");


参考文档:

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 堆,以观察是否能解决问题。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有