我不明白为什么当请求太多时应用程序会崩溃?如何测试我的应用程序响应请求的最大容量?
问问题
138 次
2 回答
0
为什么你认为应用程序被挂起?可能只是做一些长期运行的操作?
“挂起太多请求”听起来像是您用尽了资源(例如,数据库连接),但是,您应该在这种情况下的日志中的某处看到一些异常堆栈跟踪,或者您有一些并发问题。
要确定,您需要进行线程转储并查看是否所有线程都在执行您期望它们执行的操作。您可以只在开始时关注应用程序的线程(数据库线程、逻辑和 servlet 线程),因为 Tomcat 或 SQL 服务器内部不太可能存在一些错误。通过查看日志(或在需要时添加它们),尝试找到应用程序停止按预期运行的位置。
于 2012-05-08T14:58:19.163 回答
0
我不明白为什么当请求太多时应用程序会崩溃?
如果您询问的是特定应用程序,答案是我们也不知道,而且我们没有任何证据可以从中推断出问题可能是什么。寻找证据的地方:
- 检查服务器日志。
- 如果您有反向代理,请检查代理的日志。
- 检查后端数据库日志。
- 检查系统级性能统计;例如,寻找 VM 抖动、磁盘 I/O 过载等的证据。
- 检查病理性 GC 行为。
- 检查阻塞/阻塞的线程,指示并发瓶颈、死锁等。
如果您在一般情况下询问,可能有多种原因:
- 耗尽外部资源(例如数据库连接)
- 创建过多线程
- 尝试对每个请求进行排队以避免丢弃请求和其他损坏的策略。
- 并发瓶颈
- 导致性能在负载下衰减的病态算法或数据库查询设计。
- 断错恢复;例如,欠载你开始得到意外的异常,这会触发资源泄漏。
- 等等 ...
以及如何测试我的应用程序响应请求的最大容量...
创建一个测试工具以重复向您的服务器发送请求,并查看服务器可以维持的速率。现有的框架可以做到这一点。
于 2012-05-08T15:29:05.353 回答