The amount of data served from the database is only one component that uses RAM. There is also the database itself that needs RAM to operate, the web server needs RAM, PHP needs RAM, etc.
All in all I would say that with only 2KB per visitor you’re pretty much bound by how many users your web server and PHP pools are able to handle at any given point.
If we assume those 10 million requests will be spread equally over the day (hint: they won’t be) then you’re looking at 10,000,000 / 24 / 60 / 60 = 115 req/sec. That is quite a lot, especially when you take into account that since the visitors won’t be distributed equally over the day then the peak will be much higher than that.
Given what you’ve said so far I would personally be tempted to get a fleet of smaller VMs and distribute the load over these VMs, rather than getting one big fat VM, since the biggest concern will be getting the concurrency you’re after, which is a lot easier to do with multiple VMs than trying to tweak one VM to do it.
Where is the number 10,000,000 coming from? How realistic is?
At that scale I would seriously consider doing some proper load testing to see what your specific needs for your specific app are, rather than doing some back of the napkin calculations and then hoping they’ll hold (hint: they won’t).