Just a hunch here but I would look at this setting worker_connections 4096; to see if it's creating issues.
For just 2 Tornado instances 4096 just feels higher to me than it needs to be….. but not know what the code is really doing that is more gut level hunch than a solid answer to why you should change it.
2 worker_process and 4096 worker_connections seems out balance to me.
Maybe tweak you 4096 down to 256 or 512 or 1024 and see if that shifts anything.
And Or…...Google
nginx worker_connections and see what others talk about around that setting to see if it sheds any light on your problem.
The other thing are you 100% sure it's not your code that is choking some how?
Briefly looking at the core Nginx config settings it seems like they are correct, but again I am no Nginx config expert.
If I was working through the problem on my workbench, I would dump as much of the Nginx configs down to an absolute mininum server setup to see how it reacts.
And then starting adding in other settings and or increasing the size numbers to see if one those are chocking things on you some how.
-Kevin