某天在服务器上的网页打不开了,频繁报以下错误。2007-3-181:08:26org.apache.tomcat.util.threads.ThreadPoollogFull严重:Allthreads(150)arecurrentlybusy,waiting.IncreasemaxThreads(150)orchecktheservletstatus在网上找了些回答,以下是我觉得正确的回答:1.我想你的部分资源没有释放,积压卡死的2.
某天在服务器上的网页打不开了,频繁报以下错误。
2007-3-18 1:08:26 org.apache.tomcat.util.threads.ThreadPool logFull
严重: All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status
在网上找了些回答,以下是我觉得正确的回答:
1.我想你的部分资源没有释放,积压卡死的
2.连接池问题
3.应该是服务器端响应request的线程的处理时间过长导致的
分析:
当时使用网站的人数只有2个人,不可能答到到了并发线程150的上线。所以应该不是数据库的问题。
通过对出错的提示判断,应该是连接池使用不合理造成的,或者根本没设置连接池。和数据库连接的部分是使用Spring的数据源JDBC连的,如下:
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- driver for MySQL-->
<property name="driverClassName"><value>org.gjt.mm.mysql.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8</value></property>
<property name="username"><value>test</value></property>
<property name="password"><value>test</value></property>
</beans>
问题应该出现在Spring的DriverManagerDataSource上,它负责管理这些连接的。
下边是对DriverManagerDataSource 的解释
DriverManagerDataSource in Spring Framework
javax.sql Interface DataSource
Implementation of SmartDataSource that configures a plain old JDBC Driver via
bean properties, and returns a new Connection every time.
Useful for test or standalone environments outside of a J2EE container, either
as a DataSource bean in a respective ApplicationContext, or in conjunction with
a simple JNDI environment. Pool-assuming Connection.close() calls will simply
close the connection, so any DataSource-aware persistence code should work.
In a J2EE container, it is recommended to use a JNDI DataSource provided by the
container. Such a DataSource can be exported as a DataSource bean in an
ApplicationContext via JndiObjectFactoryBean, for seamless switching to and from
a local DataSource bean like this class.
If you need a "real" connection pool outside of a J2EE container, consider
Apache's Jakarta Commons DBCP. Its BasicDataSource is a full connection pool
bean, supporting the same basic properties as this class plus specific settings.
It can be used as a replacement for an instance of this class just by changing
the class name of the bean definition to
"org.apache.commons.dbcp.BasicDataSource".
-----------------------------------------------
Many Jakarta projects support interaction with a relational database. Creating a
new connection for each user can be time consuming (often requiring multiple
seconds of clock time), in order to perform a database transaction that might
take milliseconds. Opening a connection per user can be unfeasible in a
publicly-hosted Internet application where the number of simultaneous users can
be very large. Accordingly, developers often wish to share a "pool" of open
connections between all of the application's current users. The number of users
actually performing a request at any given time is usually a very small
percentage of the total number of active users, and during request processing is
the only time that a database connection is required. The application itself
logs into the DBMS, and handles any user account issues internally.
There are several Database Connection Pools already available, both within
Jakarta products and elsewhere. This Commons package provides an opportunity to
coordinate the efforts required to create and maintain an efficient,
feature-rich package under the ASF license.
The commons-dbcp package relies on code in the commons-pool package to provide
the underlying object pool mechanisms that it utilizes.
Applications can use the commons-dbcp component directly or through the existing
interface of their container / supporting framework. For example the Tomcat
servlet container presents a DBCP DataSource as a JNDI Datasource. James (Java
Apache Mail Enterprise Server) has integrated DBCP into the Avalon framework. A
Avalon-style datasource is created by wrapping the DBCP implementation. The
pooling logic of DBCP and the configuration found in Avalon's excalibur code is
what was needed to create an integrated reliable DataSource.
看完了解释,事实上是因为DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用。改为以下开源的连接池会好点。
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>org.hsqldb.jdbcDriver</value>
</property>
<property name="url">
<value>jdbc:hsqldb:hsql://localhost:9001</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
测试通过,问题消除,如果没有搜索引擎找答案不会这么快解决问题。
分享到:
相关推荐
如何安装监控tomcat服务_防止tomcat死掉系统无法服务的问题
tomcat假死排查手册
Linux定时脚本监控tomcat是否假死或出现运行异常,若出现异常则自动重启。
Shell脚本定时监控tomcat,服务挂掉自动重启
有关tomcat部署项目常见问题,extjs包说明
tomcat启动不了问题处理 解决tomcat启动不了问题
tomcat解决跨域访问问题,具体配置如下: 1、修改tomcat下的Conf/web.xml文件,在该文件内容中新增以下配置,注意,若该web.xml中存在其它filter,则需要将该filter放在所有filter前面; <filter-name>...
检测Tomcat等网站假死,自动重启脚本,方便大家下载,可以参考修改。
在日常使用tomcat经常会因为tomcat不支持跨域访问导致许多问题,此文章主要解决tomcat跨域无法访问的问题。
tomcat常见问题分析tomcat常见问题分析
解决tomcat中文乱码问题,有详细的解释说明,希望对需要的人有所帮助
tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...
tomcat 服务器的8080冲突是使用Tomcat时最容易出现的问题。本人也遇到这个问题,在网上进行了搜查,希望能找到解决办法。至少找到4种解决的办法,试过之后问题没有得到解决。主要是只给出办法,没有对问题的原因进行...
weblogic和tomcat 下载附件乱码问题 weblogic和tomcat 下载附件乱码问题
内含tomcat7 tomcat8 tomcat9免安装版本;供需要的人下载。
该文档给出了tomcat的安装及环境配置及在环境配置中出现的常见问题的解答
包含tomcat7,tomcat8,tomcat9,解压、在eclipse配置好即可。
tomcat跨域问题解决方法。解决页面间调用跨域问题
tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0
Tomcat Tomcat Tomcat Tomcat