Java Web服务器的build议

我目前使用DBCP进行连接池,因为它或多或less提供了tomcat,并且易于安装。 我正在考虑迁移到Glassfish或Jetty,还没有确定我将使用哪个连接池提供程序。

我目前使用Hibernate运行JBoss Seam,并且到目前为止已经获得了不错的性能。

我看过一些文章,说c3p0更好,有人说proxool更好,然后有人说他们都处于陈旧的状态,所以dbcp是最好的select,因为它是更多的维护和文档。

我今天晚上进行了JMetertesting,发现当我有10个并发用户以任意顺序点击该站点时,在页面请求之间没有任何延迟,dbcp无法连接并发生爆炸。 我对这个错误感到失望,但是对这个performance感到满意。 我想我可以使用二级caching提高性能。

问题:

  1. 如果我不使用EJB或OSGI,Jetty 7是Glassfish和tomcat 6的明显优势吗? 这当然要小得多,因此应该消耗更less的资源。 我现在只部署1个Web应用程序,稍后我会部署。

  2. 你推荐一个简单的应用程序服务器的连接池? 我不希望有10个并发用户在请求之间没有任何延迟,但是很高兴知道应用程序在爆炸之前能够处理什么,以及它在达到这一点时的作用。

  3. 最后,无法获取连接错误通常表明查询运行时间过长,从而无法将连接返回到池中。 除了确保所有查询都有效地运行之外,您还可以检查其他哪些方面?

例外:

00:38:38,886 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null 00:38:38,898 ERROR [JDBCExceptionReporter] Already closed. 00:38:46,823 INFO [DefaultLoadEventListener] Error performing load command org.hibernate.SessionException: Session is closed! 

我的平均响应时间是300ms,最小100ms,最大5s,标准偏差300ms。 这是在一个Linode基地服务器(360 MB内存,最简单的包)。

还有其他意见吗?

谢谢,

沃尔特

看到

http://javatech.org/2007/11/c3p0-vs-dbcp-the-straight-dope/

特别是第二个评论(达伦·希克斯关于封锁行为的评论)。