Is the 1.7 GB memory bottlenecked by the 32 bit processor in case of Small instance? Or does choosing 64 bit Micro instance give better performance because its 64bit? I am confused performance wise, and cant think straight. Even if there is no fixed answer, can anyone list out the points I should think about before selecting either? If it helps, this is my configuration:
1 Micro/Small Instance, running via Elastic Beanstalk. Hosts the webapp, created in GWT, and is a mongoDB slave.
1 Large DB-server, running as mongoDB master. The webapp queries the DB-Server for data, the slave is a read-only.
The webapp runs mongod, memcached, apache and tomcat.
PS: We need an amazon-beanstalk
tag.
It's not necessarily performance, it's memory addressing. If you're going to use a lot of memory, you'll want the 64 bit option. If it's less than 4 gig, 32 bit will work fine, as long as you're running 32 bit programs.
Given the amount of memory you cite it won't matter. Processor tuning will be less of a worry than disk access, architecture of your application design, and network speed. Your processor performance difference would be like worrying about how much weight the cloth seatcovers in your car affect your car's fuel economy while ignoring your tire pressure, driving behavior and engine tuneups.
A micro instance (0,6GB RAM) will outperform small instance (1,7GB RAM) only for short periodic CPU bursts, as it can use 2 compute units instead of 1.
For a web application small instance will be much better. But it is 4,5 times more expensive.
32 or 64 bit will have no difference.
64 bit doesn't generally help performance, and can impair it, unless your applications need to address more than 2GB of RAM. Since that's unlikely on a 1.7GB instance, I wouldn't worry about going for 64 bit. Your Small instance will generally perform better than a Micro, because it has a lot more memory (although the Micro can burst its CPU to higher levels than a Small for brief high workloads).