用于运行Java Web应用程序的单个服务器的可伸缩性

Lam*_*bda 5 java scalability java-ee

我希望获得有关部署到单个Tomcat实例的单服务器Java Web应用程序可以处理的工作负载规模的更多信息.特别是,让我假装我正在开发一个具有类似维基百科的使用模式的Wiki应用程序.如果我将服务器部署在具有以下配置的计算机上,我的服务器可以在内存不足之前可靠地处理多少请求,或者显示压力过大的迹象:

  • 4核高端Intel Xeon CPU
  • 8GB RAM
  • RAID-1中的2个HDD(无SSD,无基于PCIe的固态存储)
  • RedHat或Centos Linux(64位)
  • Java 6(64位)
  • MySQL 5.1/InnoDB

另外,我们假设MySQL数据库与Tomcat安装在同一台机器上,并且所有Wiki数据都存储在数据库中.此外,让我们假装Java应用程序构建在以下堆栈之上:

  • SpringMVC为前端
  • Hibernate/JPA用于持久化
  • DI和安全等的春天

如果您没有使用确切的配置,但有评估类似架构的可扩展性的经验,我也会非常有兴趣听到这个.

提前致谢.

编辑:我想我没有正确地阐述我的问题.我用最多的投票标记答案作为最佳答案,我将在社区维基区重写我的问题.简而言之,我只想了解您在Java应用程序能够在一台物理服务器上处理的工作负载规模的经验,以及有关应用程序本身的类型和体系结构的一些描述.

YoK*_*YoK 3

您将需要使用一组工具:

  1. 可以使用负载测试工具 - JMeter。
  2. 监控工具 - 该工具将用于监控各种数量的资源负载。有付费的也有免费的。Jprofiler、VisualVM
  3. 收集和报告工具。(没有使用任何工具)

通过上述工具,您可以找到最佳价值。我会通过以下方式处理它。

  1. 将了解被访问的页面的比率应该是多少。什么是后台进程及其频率。
  2. 相应地配置我的 JMeter(对于比率),并监视所应用负载的性能(服务页面的时间...可以在 JMeter 中完成),使用监视器工具监视其他资源。还要检查错误率的计数。(注意:您需要确定不可接受的错误率。)
  3. 不断地逐步增加负载并不断写入各种感兴趣的数字,直到服务器完全故障。

您可以根据许多标准、低错误率、最大服务时间等来决定最佳值。JMeter 支持多种应用负载的方法。