确定企业 Web 应用程序的服务器硬件要求

Determining the server hardware requirements for an enterprise web application

我们一直在开发新版本的企业应用程序,我们几乎准备好开始升级我们的客户。然而,由于一切都发生了变化(后端和前端),我们必须重新确定服务器端的硬件要求,更重要的是根据每天使用系统的预期用户数量来确定所需的内核和内存数量。

应用后端是用Java编写的,在Wildfly 8.0.2 应用服务器上将是运行。此外,这个新版本的应用程序 Ajax 很重,每个客户端可能每秒发起 5 个甚至更多的请求,每个请求都有可能打开数据库连接以获取数据。

目前我们没有使用任何 Java 框架,如 ejb 或 JPA,只是一个简单的基于服务的 3 层架构。假设同时有 200 个用户的最大工作量(作为示例)这需要什么样的资源?作为参考,旧应用程序(经过反复试验)我认为每 20 个用户需要大约 1 个内核和 2GB 内存。不过这次我们想在测试前做一个粗略的估计,然后再进行微调。

自定义软件的容量估算没有规则。您只需要对其进行测试。周围有很多工具可以帮助您。您可能想要创建一些验收标准,例如;

  • 能够在 Y 分钟内处理 X 个客户订单
  • 能够以 < 200 毫秒的响应时间提供页面 Z
  • 等等

一旦您的验收标准设置好,流程通常是这样的;

  1. 找出可能的用法 patterns/user 旅程。
  2. 编写一些测试来生成与您从 1 中发现的结果相匹配的流量,并编写一些测试验收标准的测试。
  3. 运行 参考硬件上的那些测试(随便挑一些;什么并不重要),并发用户数不同,例如 10、100、1000。
  4. 衡量响应时间如何随用户数量的变化而变化。

您现在有一个性能参考 point/benchmark。您可以说在硬件 A 上,我们的软件支持 B 数量的并发用户,响应时间低于 C。您可以针对不同的客户需求进行扩展;例如,如果客户估计的流量是您测试的两倍,那么您可能希望有一个服务器集群来分担负载以保持性能。

一旦您有一些客户在使用您的软件,您就可以获得有关其性能的 feedback/gather 信息。这将帮助您完善基准。