2012-05-08 41 views
-3

我不明白为什么当请求太多时应用程序停止运行?我如何测试我的应用程序的最大容量来响应请求?为什么当有很多请求时应用程序会自行挂起?

+1

检查在tomcat/logs目录中发生了什么,然后在这里发布,我确定catalina.out有话要说 –

+0

您应该问问自己,您期望应用程序执行什么操作? – home

+0

您需要阅读的时间http://www.catb.org/~esr/faqs/smart-questions.html –

回答

0

我不明白为什么在请求过多时应用程序出现故障?

如果你问的是一个具体的应用,答案是我们也不知道,而且我们也没有任何证据可以推断出问题的可能性。寻找证据的地方:

  • 检查服务器的日志。
  • 如果您有反向代理,请检查代理的日志。
  • 检查后端数据库日志。
  • 检查系统级性能统计信息;例如寻找虚拟机抖动,磁盘I/O过载等等的证据。
  • 检查病理性GC行为。
  • 检查阻塞/堵塞的线程,指示并发瓶颈,死锁等。

如果你问在一般情况下,可以有任意数量的原因:

  • 暗战外部资源(如数据库连接)
  • 创建线程太多
  • 尝试对每个请求进行排队以避免丢弃请求以及其他破碎的策略。
  • 并发瓶颈
  • 病态算法或数据库查询设计导致在负载下衰减的性能。
  • 损坏的错误恢复;例如欠载,你开始得到意想不到的异常,这会触发资源泄漏。
  • 等等...

以及如何测试响应请求其最大容量我的应用程序...

创建一个测试工具反复请求发送到您的服务器,并查看服务器可以维持的速率。有现成的freameworks这样做。

0

为什么你认为应用程序被绞死?可能只是做一些长期运行的操作?

“挂在太多的请求上”听起来像是用尽了资源(例如数据库连接),但是,在这种情况下,您应该在日志中的某处看到某个异常堆栈跟踪,或者您有一些并发问题。

要知道肯定,你需要做线程转储,看看所有的线程是否做你期望他们做的。您只需在开始时注意应用程序的线程(数据库线程,逻辑和servlet线程),因为Tomcat或SQL服务器内部不太可能存在一些错误。通过查看日志(或者如果需要,添加它们),尝试找到应用程序停止行为的地方,如您所期望的那样。

+0

谢谢维克多。 – JackAss

+0

我需要学习如何测试我的应用程序。 – JackAss

相关问题