我有一个用Spring框架编写的非常简单的书店web应用程序,只是为了测试它的可伸缩性。
我在一个EC2实例(t1.micro)上部署了这个书店,在Amazon RDS(t1.micro)上部署了数据库,主/从复制了一个主实例和3个从属实例(实际上读取的次数比写入多得多) 。一个t1.micro RDS实例最多可以有32个并发连接
然后我用JMeter进行压力测试,发现瓶颈在数据库中,因为你可以与t1.micro RDS实例最多有32个并发连接。
我是否应该自动扩展RDS数据库实例,因为创建新副本会修改master并且它确实需要很长时间才能使其可用?
我应该使用MySQL主/副本创建EC2实例,然后自动扩展这些实例,而不是使用RDS?
我应该对数据库进行分片而不是复制吗?
应用程序还使用com.mysql.jdbc.ReplicationDriver在主实例和从属实例之间进行负载平衡。我应该使用像HAProxy这样不同的东西吗?
答案 0 :(得分:2)
你有没有考虑过缓存和分区?我们工作的Web应用程序使用了Memcache。它确实有助于解决性能问题。另一方面,如果您有具有如此多记录的表,则应考虑进行分区,在分区上访问这些表会产生显着影响。