Java Web 服务器的建议

Java Web 服务器的建议

我目前正在使用 DBCP 进行连接池,因为它或多或少随 tomcat 提供并且易于设置。我正在考虑迁移到 Glassfish 或 Jetty,但尚未确定将使用哪个连接池提供程序。

我目前正在运行带有 Hibernate 的 JBoss Seam,到目前为止,该配置已经获得了不错的性能。

我见过一些文章说 c3p0 更好,有些文章说 proxool 更好,还有一些文章说它们都处于陈旧状态,所以 dbcp 是最好的选择,因为它维护得更好并且有文档。

今晚我运行了 JMeter 测试,发现当有 10 个并发用户以任意随机顺序访问网站且页面请求之间没有延迟时,dbcp 无法获得连接并崩溃。我对错误感到失望,但对性能感到满意。我认为我可以通过二级缓存稍微提高性能。

问题:

  1. 如果我不使用 EJB 或 OSGI,Jetty 7 是否明显优于 Glassfish 和 tomcat 6?它肯定要小得多,因此开箱即用的资源消耗也更少。目前我只部署 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!

我的平均响应时间为 300 毫秒,最小响应时间为 100 毫秒,最大响应时间为 5 秒,标准差为 300 毫秒。这是在 Linode 基础服务器上(360 MB RAM,最简软件包)的结果。

还有其他评论吗?

谢谢,

沃尔特

答案1

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

特别是第二条评论(Darren Hicks 关于阻止行为的评论)。

相关内容