PHP, memcached + DB in general scales well but there may be ways to do it with lower costs i.e. a stack that's able to handle more concurrent requests per machine.
Given your comment here...
My goal is not a large scalable system, just a simple technology stack. I'm not growing a DB, Search, crawler, etc. Just a simple request, query, respond, and store. Any recommendations for technology stack for my purpose?
.. it sounds like the DB part might be solvable by Amazon's S3 (what?!?), assuming you only need to locate items by key. That would also give you Cloudfront (en.wikipedia.org/wiki/Amazon_CloudFront) for reads, if you don't mind the eventual consistency (www.infoq.com/news/2008/01/consistency-vs-availability).
Meanwhile server-side something using async IO (en.wikipedia.org/wiki/Asynchronous_I/O) to handle requests should significantly boost the number of concurrent requests each machine can handle. As another poster already said tornado (bret.appspot.com/entry/tornado-web-server) would be worth a look here - haven't seen an API for async IO that's friendlier.
You'd probably still need memcached to keep reads fast but you want to watch out there that the memcached client isn't going to end up blocking the server process while trying to make concurrent requests - PHP wouldn't normally have this problem as each PHP (or Apache) process has it's own memcached connection and is only ever doing one thing at a time. This python client - code.google.com/p/python-libmemcached/ - should support async IO - the underlying libmemcached has support for asynchronous requests.
Same goes for HTTP requests from server to S3 - how do you handle concurrent requests there? boto (code.google.com/p/boto/) seems to use a connection pool for that, each connection holding a different socket open. Memory use?
Disclaimer: I'm being an armchair architect here - haven't actually done this and the smartest advice might be finish the project on time with the stack you know well and aren't going to fail with.
Sorry about the links
sorry, new users can only post a
maximum of one hyperlink