线上resin服务跑一段时间就会抛出以下这个异常,导致服务不断重启,用的是spring+ibatis+mysql
这个问题如何解决?
数据库连接池配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${env.mysql.jdbc.url}" />
<property name="username" value="${env.mysql.username}" />
<property name="password" value="${env.mysql.password}" />
<property name="defaultAutoCommit" value="true"></property>
</bean>
Caused by: java.lang.IllegalStateException: Pool closed
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1132)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:115)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:430)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:202)
... 50 more
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.lang.IllegalStateException: Pool closed
异常追加:java.lang.outOfMemoryError:unable to create new native thread
导致resin不断的重启
问题分析:
线上服务resin不断自动重启,出现了2次,异常如上,
第一次出现后分析可能有两种原因:
1.可能是程序里面线程池的数目设置过大
2.数据库最大链接数目设置不合理
所以根据以上2点做了相关优化,调小程序里面连接池的数目,将数据库最大链接数调大
优化完毕后,貌似起到了一定的效果。可是一个多月后这个问题再次重现,并且这次持续时间相当长,大约有半个小时。
痛定思痛,又根据异常分析,表面上看是线程数创建过多,导致内存溢出,没有足够的内存创建新的线程,网站上的表象就是访问超慢或者压根访问不了。
由于程序已经正常运行了半个月,先排除代码的问题。猜测是不是数据库方面的原因,随即联系dba找出当时异常时间点数据库方面的相关日志,发现在resin不断重启前,有几个sql执行的效率相当低下,达到了好几百秒,这完全已经不正常。由于执行相当慢,表被锁了,但大量的查询还在不断的涌入,大量sql直接被阻塞,数据库链接耗尽,无法创建新的链接。线程数目不断的增加,旧有线程占用内存又没释放,直到web容器的承受不了后,就开启了自动重启的保护机制。
解决方案:找出了那几个查询相当慢的sql。逐个进行分析,对sql进行优化,对于优化效果不大的,从业务层上进行解决(多次查询,降低占用数据库连接的时间)。
优化完毕后,重新部署运行,持续观察中。。。。。
相关推荐
resin linux 重启脚本,包括进程杀死,端口检测等
### Resin内存溢出后自动重启方案解析 #### 背景介绍 Resin是一款高性能、功能丰富的Java应用服务器及Web容器,广泛应用于各种企业级应用程序和服务中。它支持多种编程语言,包括Java、JSP等,并且在性能优化方面...
- 重启`resin.exe`服务。 - 使用新创建的管理员账户登录控制台。 #### 三、Resin中的项目部署 在Windows环境下部署项目通常涉及到IDE(集成开发环境)的设置以及Resin服务器的配置。 ##### 1. 配置MyEclipse - ...
总而言之,Resin3和Resin4作为Java应用服务器,它们在提供Servlet和JSP支持的同时,不断优化和提升自身的性能,以满足不同规模和复杂度的项目需求。通过对比分析这两个版本,开发者可以根据具体项目需求选择最适合的...
### 运维-resin常见问题解析 #### 1. Resin服务器基础问题 ##### 1.1 Resin服务器概述 Resin是一款高性能的企业级Java应用服务器,它支持Servlet、JSP以及各种Java EE规范,被广泛应用于Web应用程序的部署与运行...
Resin服务器是一款高性能的Java应用服务器,由Caucho Technology公司开发。它的设计目标是提供高效、稳定且易于管理的平台来运行Java EE应用程序。在您提到的压缩包文件中,"resin1"、"resin-webapp"和"resin-lib"这...
【Resin3】是CometD项目下的一个高性能、轻量级的Java应用服务器,它最初由Caucho Technology开发并维护。Resin3版本3.0.21是该系列的一个重要版本,提供了对Java EE 5标准的支持,包括Servlet 2.5、JSP 2.1和EJB ...
这可能是由于某种错误导致Resin不断崩溃。启用调试日志可以帮助识别导致重启的原因。 1.3. java.lang.OutOfMemoryError 这是一个内存溢出问题,表明JVM的堆内存不足。解决方法包括增加JVM启动时的堆内存大小,进行...
9. **热部署**:Resin支持应用的热部署,无需重启服务器即可更新应用,减少了服务中断时间。 10. **XML处理**:Resin支持XML和Web Services,包括SOAP和RESTful API,方便集成不同系统间的通信。 下载的压缩包...
要升级Resin到新版本,只需下载新版本的安装包,按照上述步骤重新解压并覆盖原有目录,然后重启Resin。 通过以上步骤,您已成功安装并配置了Resin服务器。在实际应用中,Resin的高效性能和灵活配置将为您的Java ...
- **详细的日志记录**:Resin提供了详细的日志功能,有助于问题排查和性能分析。 - **性能监控**:通过日志和Web管理界面可以实时监控服务器性能指标,如CPU、内存使用情况等。 综上所述,Resin-Pro-3.1.8作为一...
分析启动日志有助于我们了解Resin的启动流程,及时发现并解决问题。总结分析启动日志,可以发现服务器启动时可能遇到的问题,如配置错误、依赖库缺失等,为故障排查提供线索。 二、运行时调试日志 运行时调试日志...
【标题】:“resin-1 resin服务器的组件详解” 【正文】: Resin服务器是一款高效、轻量级的Java应用服务器,尤其适用于处理高并发的Web应用。它由多个核心组件构成,使得其在性能、稳定性和扩展性上具有显著优势。...
开发者在开发过程中,修改完Java代码后,无需手动重启服务器,Resin会自动检测到变化并重新加载新的类,极大地提高了开发效率。对于持续迭代和调试的项目来说,这是一个非常实用的功能。 2. 高性能:Resin以其高...
插件提供了快速启动、停止和重启Resin服务的功能,以及直接在IDE内部署Web应用的便利。 2. IntelliJ IDEA集成:对于IntelliJ IDEA用户,可以通过“External Tools”配置Resin的启动脚本,使其成为IDE的一部分,便于...
1. **集成开发与调试**:通过插件,开发者可以直接在Eclipse中启动、停止、重启Resin服务器,无需离开IDE,极大地提高了开发效率。 2. **应用部署**:插件支持快速部署Java Web应用程序到Resin服务器,如WAR文件的...
- 日志记录是系统运维的重要组成部分,Resin 提供了丰富的日志配置选项,帮助开发者进行问题排查和性能分析。 #### 十、管理界面 - **Resin 管理界面** - 通过图形化界面来管理 Resin 的各项功能,包括应用部署、...
- 将 `C:\Program Files\GnuWin32\bin\` 目录下的 `libssl32.dll` 和 `libeay32.dll` 两个文件复制到 Resin 的根目录下。 #### 四、生成 SSL 证书 1. **创建 keys 目录**: - 在 Resin 根目录下创建名为 `keys` ...
- **监控工具**:提供一系列监控工具来帮助用户监视和分析 JVM 的运行状态。 ##### 1.6 启动选项 Resin 支持多种启动选项,以适应不同的应用场景需求。例如: - **命令行参数**:通过在启动命令中加入特定的参数...
5. 重启Apache2:完成配置后,重启Apache2以应用新的配置。 6. 测试:通过访问`http://yourdomain.com/yourapp`来测试你的JSP应用是否能正常工作。 通过这样的集成,Apache2+Resin-2.1.16组合可以提供一个强大且...