java - 为什么当有很多请求时应用程序会挂起?

标签 java sql-server-2005 jakarta-ee tomcat

我不明白为什么当请求太多时应用程序会崩溃?如何测试我的应用程序响应请求的最大容量?

最佳答案

I do not understand why application goes down when there are too many requests?

如果您询问的是特定应用程序,答案是我们也不知道,而且我们没有任何证据可以推断出问题可能出在哪里。寻找证据的地方:

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

如果您问的是一般情况,可能有多种原因:

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

and how to test my application for its maximum capacity to respond to requests ...

创建一个测试工具以重复向您的服务器发送请求并查看服务器可以承受的速率。现有的框架可以执行此操作。

关于java - 为什么当有很多请求时应用程序会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501049/

相关文章:

java - parseLong 方法在 Java 中如何工作?

sql - 结合 INSERT 和 UPDATE 语句(SQL2005 存储过程)

java - 远程访问 Liferay 内容 给出异常 权限检查器未初始化

javax.el.PropertyNotFoundException : Property 'rollno' not found on type java. lang.String

postgresql - JPQL EclipseLink 分页

java - Jackson解析器异常: unexpected Character

java - Hibernate 使用悲观锁还是乐观锁?

java - 为什么每次我点击另一个 fragment 时,从 firebase 检索的数据都会增加?

sql-server-2005 - SQL Server 如何维护连接?

sql - 为什么 SQL Server 标量值函数变得更慢?