我有一个使用Openfire,Tomcat6和MySQL的聊天应用程序。
目前,我已经在单个Linux微型实例(613 MB内存)上安装了所有这些服务器。 即使在低用户基础10-20我遇到CPU过载这是相当明显的。
因为,我是亚马逊EC2的新手,有人可以build议我如何根据交通使用扩大我的架构?
我应该使用单个小型或中型实例整个服务器堆栈。
上下文中的一些因素:
我会使用至less一个m1.small或更好的一个m1.large实例。 微型实例仅仅是为了开发,因为613MB即使用户数量不足也可能不够用。 除此之外,你很可能会看到很多CPU的窃取时间,你的服务器在你有一个小的CPU高峰后不会反应一段时间。 这非常烦人。
我会尝试让除了mysql-db以外的每个实例都运行整个堆栈。 看看RDS! 你不需要设置一个高可用性mysql主从基础设施你自己!
由于不可预知的CPU节stream,请勿将微型实例用于生产。 在单一实例中运行所有内容会更具成本效益,但是如果您计划进行扩展和扩展,最好在多个实例中devise和开发您的应用程序。
从长远来看,最好将应用程序服务器与数据库分开,以便为每个层提供最大的灵活性和可伸缩性。 目前RDS是一个很好的select,但是请记住它仅限于一个实例,如果您的stream量突然超过最大实例的容量,您可能会遇到停机时间,然后您需要设置与其他实例聚类,这是复杂的。 EC2上的另一个选项是Xeround的云数据库服务 ,它与RDS的不同之处在于它可以自动扩展到其他实例以适应额外的吞吐量并自动处理群集。 至于应用程序服务器,您可以使用Amazon的CloudWatchfunction自动扩展它。