繁体   English   中英

在EC2实例上为Tomcat分配Java堆

[英]Allocating a Java heap for Tomcat on an EC2 instance

我正在编写一个Java servlet,我计划使用Elastic Beanstalk在Amazon AWS上部署。 我的测试显示使用Small EC2实例使用Beanstalk使用的库存Tomcat AMI可以很好地运行。

我正在试图弄清楚如何为此配置正确分配Java堆空间。 一个小实例有1.7 GB的内存,所以我认为一个1024MB的堆将运行良好。 我意识到其他东西需要内存,即使这个实例的唯一“真正”目的是运行Tomcat。 而且我也知道,标准的Sun / Oracle JVM实际上并不起作用。

这是分配内存的合理方法吗? 我应该使用更多还是更少? 我可以使用哪些工具来帮助确定最佳配置?

1024似乎没问题,也许有点多。

我不确定你的servlet在做什么,但为了给你一个想法,我有一个电子商务应用程序,每天有大约1000个用户在2个小ec2实例上运行。 Tomcat加载是通过mod_jk分发的。

我根本没有调整JVM并保持默认设置。 我也在使用赤土陶器分布式对象缓存,这个过程似乎消耗了大部分内存。

您是部署在基于Linux的操作系统还是Windows上? IMO,linux在管理可用内存方面做得更好。

至于工具,我建议将应用程序部署到一个小型ec2实例,并使用JMeter等工具对应用程序进行压力测试。 在压力测试期间,您可以打开顶级实用程序(假设您的应用程序在Linux上并且安装了top)。

尝试通过查看它可以处理多少负载来打破您的应用程序。 这就是ec2的美妙之处,您可以在几分钟内设置测试环境并立即丢弃它。

检查java的newrelic以确定堆使用模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM