我正在寫我打算利用彈性魔豆亞馬遜AWS部署一個Java servlet分配爲Tomcat Java堆。我的測試表明,使用Beanstalk使用的股票Tomcat AMI的Small EC2實例可以很好地運行。在EC2實例
我試圖找出如何合理分配Java堆空間,這個配置。一個小實例有1.7 GB的內存,所以我認爲一個1024MB的堆可以很好地工作。我意識到,即使這個實例唯一的「真正」目的是運行Tomcat,其他事情也需要內存。而且我也知道,標準的Sun/Oracle JVM實際上並不工作的地方有很多堆。
這是分配內存的合理方式嗎?我應該多用還是少用?我可以使用哪些工具來幫助確定最佳配置?
感謝您的輸入。 我不會詳細介紹我們的應用程序。它允許用戶查看有關不同主題的信息,然後可能向他們添加更多信息。有關這些主題的一些信息是從數據庫中動態生成的,而其中大部分是靜態數據,我們從啓動時從文件中讀取並保存在我們自己的堆中的數據結構中。總而言之,這是大約250-300 MB的數據。我猜測,當我們真正運行時,我們每天會有幾萬個用戶。 – 2011-12-20 21:55:31
在我以前的AWS項目上,我試圖控制一切。對於這個項目,我決定我需要花更多時間在「真正」的應用程序上,以及如何推銷它,而不是簡單的IT工作,所以我只是使用股票Beanstalk。這意味着使用他們的Linux的股票AMI和Elastic Load Balancer。有什麼理由你爲什麼使用mod_jk來分配負載而不是ELB? 因此,爲什麼你認爲1024有點太多了?這爲其他任何事情留下了700MB,這實際上不過是標準操作系統任務。我正確看着這個嗎? – 2011-12-20 21:55:52
@SanderSmith我仍在使用ELB,但我正在使用它來平衡2個小型Apache Web服務器實例。然後使用mod_jk從我的apache web服務器實例分發負載到我的tomcat實例。 Apache更擅長服務靜態資源並更好地處理SSL,這就是爲什麼我使用它們。我想你能做的最好的事情就是測試負載並從那裏做出決定。如果您的應用程序預計每天會接收10k用戶,那麼無論您如何調整JVM,我都不認爲一個小的ec2實例就足夠了 – 2011-12-20 23:58:07