Hi Massimo --
Yes, I added the response.toolbar() to my ajax response and placed it at the bottom of the served page. It basically confirmed the Postgres tools -- my page is served in around 30ms for a typical request (actually faster than "explain analyze" predicted). But the wall clock says it takes between 2-10 seconds to serve the page. Maybe web2py is so fast I'm experiencing time dilation. ;-)
My guess is that the slowness comes from the interplay of the pieces in my total setup. So far I have:
1. A 6-core AMD processor running Linux
2. Postgres running on top of it
3. Virtualbox running, with 3 guests.
4. Web2py and nginx in a virtualbox guest, on Linux
5. "Host-only" networking for speedy web2py-postgress communications between VB host and guest
6. "Bridged" networking for external communication to web2py instance
So far the loading is one user, so I know I'm not getting too many requests. The networking setup works very well since i use the same channels for development on the web2py virtualbox -- host-only when at my Linux box and bridged when at a different computer. Response is snappy and immediate in all cases. Only the web2py-nginx-postgres path seems to be excessively slow, and only when I'm using jQuery AJAX requests.