Tales of Optimization and Troubleshooting
Now that our situation is clear, I can explain what had been bothering us for awhile: the local API was generally about 100 times faster than the remote API for the same task! Further, the remote API on our old 1.5 GHz Linux box outperformed our shiny new Sun V880 with RAID, especially on some of the parsers that created the database tables. Additionally, the Java remote API was painfully slow compared to the one in C. Not knowing what to do, some of us chalked it up to CodeBase, to Sun for making inferior hardware, or to Java for being slow. None of this made sense, though. Many people were happy using Sun hardware and Java, and commonsense said that the overhead for an HTTP call should be much less than we were observing.
Read the interesting story about finding perfomance problems and how simple things like KeepAlive can slow down a website.
After reading the article, it would appear that the problem wasn't so much that KeepAlive was enabled, but that they didn't understand HTTP.
With HTTP/1.1, the connection will remain open unless you send the "Connection: close" header with your request. If you don't do that, the server leaves the connection open waiting for the next request.Comment by James at June 4, 2004 02:08 PM | Permalink