I believe you are referring to running out of ports, as 65k available ports * 40 ~= 2M.
The limitation is actually on a quad tuple: {src_ip, src_port, dest_ip, dest_port}
As such, the actual limit is outrageously high and isn't really a problem. Interestingly enough, the referenced Phoenix benchmark overlooked the dest component and hit a limit as they had only 40 or so machines to use in the test. Had they used multiple ips on the server it would have given them a lot more breathing room.
EDIT: Multiple IPs != Multiple NICs. You can assign multiple IPs to a single physical interface. Also, they could have used multiple ports to accomplish the same effect.
They were limited by the testing cluster, but it was pointed out to them after the fact that they could have used multiple IPs or multiple ports on the tested server to go even higher.
http://www.phoenixframework.org/blog/the-road-to-2-million-w...