[Ur] More thoughts on the TechEmpower framework benchmarks

Adam Chlipala adamc at csail.mit.edu
Wed Dec 25 16:04:40 EST 2013


Here are some more thoughts on this benchmark competition:
     http://www.techempower.com/benchmarks/
which has been discussed here a bit already.

I spent a while today playing around with putting an Nginx proxy in 
front of the Ur/Web HTTP server, to see if there was an easy way to 
improve performance.  I ran the servers on a rather slow virtual 
machine, since I don't happen to have handy some real machines with a 
very fast LAN connection.  The real benchmark setup uses three physical 
machines (app, database, benchmarker) connected by gigabit Ethernet, so 
either of testing a server from its own machine or from a machine far 
away on the Internet seems to create unrealistic network performance.  
That's why I decided to use a set of VMs in the same data center, even 
though the ones I'm using happen to be scandalously slow.  (I hope 
_relative_ performance numbers are still right, but I don't know for sure.)

In that setting, as a sanity check, I benchmarked the VM server over the 
Internet from my laptop far, far away.  Here adding Nginx doubled 
throughput.

In tests on VMs within the same data center, however, I wasn't able to 
get any big performance change one way or the other with Nginx in front 
vs. direct connections with HTTP keepalive.  Nginx seems to increase 
latency substantially, too (like, orders of magnitude).

So, my conclusion for now is that it is not crazy to keep the Ur/Web 
HTTP server exposed directly.  The LAN latency is just too low to call 
for any special tricks to optimize network usage.  Does that sound 
sensible to folks who know about such things?

I'd still be very grateful for anyone's attempts to make similar 
measurements in environments as close to the real one as possible.  Our 
latest code is in the UrWeb directory here:
     https://github.com/pseudonom/FrameworkBenchmarks




More information about the Ur mailing list