首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >淘气的数据库应用程序会崩溃吗?

淘气的数据库应用程序会崩溃吗?
EN

Server Fault用户
提问于 2009-05-17 16:11:33
回答 4查看 2.1K关注 0票数 2

我们使用hibernate/mysql在Tomcat中运行了许多web服务。我怀疑其中一些程序配置不正确,因为几个小时后,一些单独的应用程序就会耗尽连接并停止响应。我们一直在更改连接池服务(在本例中是C3P0),但为了向后兼容,我们仍然需要将应用程序的旧版本保留在服务器上。

无论如何,我怀疑这些应用程序也损害了tomcat的整体稳定性。大约每周一次,我们的服务器完全停止响应,甚至无法提供静态页面。在重新启动服务之后,每件事都会再持续几天左右。从日志中可以看出几乎没有任何不寻常的异常,所以我不确定是什么原因导致tomcat崩溃。遗憾的是,在服务器退出响应之前,错误日志中没有列出值得注意的内容。

我们也在考虑改用JBoss,因为它更“进取”,但我不相信它能解决这些问题。是否有任何令人信服的理由来切换web平台,或者我是否应该在我们自己的web应用程序中进一步调试?另外,bad应用程序是否有可能通过做一些坏事来使应用程序服务器崩溃?

服务器配置:Windows2003Server,Tomcat6.0.18+ blazeDS 3.0,Hibernate 3.2。

EN

回答 4

Server Fault用户

回答已采纳

发布于 2009-05-17 20:39:02

我认为没有人会知道你的问题的答案,但只有领导和想法。以下是一些:

  • 你需要机器人来检查你服务的每一部分的健康状况。(测试到数据库的单个连接,获取静态网页,获取动态网页……)。这样,您将首先看到哪些中断或响应时间增加。
  • 您有监控/统计服务吗?您需要跟踪“活动数据库连接的数量”,“活动web会话的数量”,“tomcat线程的数量”,“可用内存”,CPU.

我的建议是,没有剩下来的tomcat进程,因为它们都在等待资源(可能是数据库连接,或者只是一个无限循环!)我之前列出的工具肯定会帮助您理解为什么您的服务器每周都在缓慢死亡。

  1. 在服务器上运行netstat,查看到数据库服务器的连接数量(并对照池大小和数据库服务器容量检查它)。
  2. 在你的应用服务器上运行j堆栈,然后剪切/grep/排序,看看你的线程在做什么。
票数 2
EN

Server Fault用户

发布于 2009-05-17 20:29:24

如果为静态页面提供服务不需要任何数据库访问,那么似乎不太可能是数据库资源问题本身。可能所有的池线程都卡在某个地方,例如等待数据库驱动器或死锁。我要做的第一件事是用jstack获取堆栈跟踪的快照。您可以使用visualvmjconsole进一步查看该过程。

票数 1
EN

Server Fault用户

发布于 2009-05-17 20:36:26

只想补充一句,MyISAM表中的表锁定问题很常见,这很容易导致DB连接堆积,并导致应用程序等待这些结果。

您可能希望签出MySQL进程列表,以查看是否有许多查询处于锁定状态。

# mysqladmin processlist

-或者

mysql> show processlist;

如果锁定是问题所在,您将希望查看将问题表上的存储引擎从MyISAM更改为InnoDB是否可行。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/9110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档