
Hello, Current Warp does not handle the Connection: header. For HTTP 1.1, RFC says that the connection is closed by an HTTP server if Connection: is "close" and it is not closed otherwise. For HTTP 1.0, RFC says that the connection is not closed if Connection: is "keep-alive" and it is closed otherwise. Current warp does not close connection, for example, for ResponseFile even if Connection: is not specified in HTTP 1.0. ab (ApacheBench) tries to create HTTP 1.0 connections and expects that the connections are closed by the server side. So, trying to benchmark Warp with "ab" results in getting stacked. I would like to add a proper handling of Connection: to Warp. What do you guys think? --Kazu

On Tue, Jul 19, 2011 at 12:10 PM, Kazu Yamamoto
Hello,
Current Warp does not handle the Connection: header.
For HTTP 1.1, RFC says that the connection is closed by an HTTP server if Connection: is "close" and it is not closed otherwise.
For HTTP 1.0, RFC says that the connection is not closed if Connection: is "keep-alive" and it is closed otherwise.
Current warp does not close connection, for example, for ResponseFile even if Connection: is not specified in HTTP 1.0.
ab (ApacheBench) tries to create HTTP 1.0 connections and expects that the connections are closed by the server side. So, trying to benchmark Warp with "ab" results in getting stacked.
I would like to add a proper handling of Connection: to Warp. What do you guys think?
This sounds good to me. Only reason I can think of to avoid it is the extra bandwidth used by the header, but that's not really a good reason not to use standards. Are you planning on writing a patch for this? Michael

This sounds good to me. Only reason I can think of to avoid it is the extra bandwidth used by the header, but that's not really a good reason not to use standards. Are you planning on writing a patch for this?
OK. I will implement it. I will probably steal the logic from the webserver library. --Kazu

Michael,
This sounds good to me. Only reason I can think of to avoid it is the extra bandwidth used by the header, but that's not really a good reason not to use standards. Are you planning on writing a patch for this?
OK. I will implement it. I will probably steal the logic from the webserver library.
I sent a pull request of the Connection: handling. https://github.com/snoyberg/warp/pull/8 --Kazu

On Wed, Jul 20, 2011 at 10:02 AM, Kazu Yamamoto
Michael,
This sounds good to me. Only reason I can think of to avoid it is the extra bandwidth used by the header, but that's not really a good reason not to use standards. Are you planning on writing a patch for this?
OK. I will implement it. I will probably steal the logic from the webserver library.
I sent a pull request of the Connection: handling.
And pulled, thank you. I think I'll include your IPv6 patch as well, I don't see any problems with it. Hint: Last call for anyone to speak up about it. Michael

On Tue, Jul 19, 2011 at 2:10 AM, Kazu Yamamoto
ab (ApacheBench) tries to create HTTP 1.0 connections and expects that the connections are closed by the server side. So, trying to benchmark Warp with "ab" results in getting stacked.
ApacheBench is a piece of ... well, I've nothing good to say about it. It doesn't speak HTTP 1.1, it screws up keepalive negotiations, it fails to scale up to generating high load, etc, etc. If you want something more plausible that actually speaks HTTP 1.1 (HTTP 1.0 is just about dead in the real world, and has been for ages), use httperf. However, I quite strongly dislike using it: it takes a long time to read enough of the documentation to figure out how to do supposedly simple things ... such as specifying a URL! My Haskell HTTP load tester is incomplete, but definitely solid enough for use now: https://github.com/mailrank/http-load-tester It uses the criterion analysis engine to give solid information about its measurements.

On Tue, Jul 19, 2011 at 2:10 AM, Kazu Yamamoto
wrote: ab (ApacheBench) tries to create HTTP 1.0 connections and expects that the connections are closed by the server side. So, trying to benchmark Warp with "ab" results in getting stacked.
ApacheBench is a piece of ... well, I've nothing good to say about it. It doesn't speak HTTP 1.1, it screws up keepalive negotiations, it fails to scale up to generating high load, etc, etc.
If you want something more plausible that actually speaks HTTP 1.1 (HTTP 1.0 is just about dead in the real world, and has been for ages), use httperf. However, I quite strongly dislike using it: it takes a long time to read enough of the documentation to figure out how to do supposedly simple
Warp should handle HTTP 1.0 and Connection: close properly, even if ab is a
piece of s.
Am 19.07.2011 18:51 schrieb "Bryan O'Sullivan"
... such as specifying a URL!
My Haskell HTTP load tester is incomplete, but definitely solid enough for use now: https://github.com/mailrank/http-load-tester
It uses the criterion analysis engine to give solid information about its measurements.

Hello,
ApacheBench is a piece of ... well, I've nothing good to say about it. It doesn't speak HTTP 1.1, it screws up keepalive negotiations, it fails to scale up to generating high load, etc, etc.
I did not say we should use ab. I just said warp has a problem when we use ab.
If you want something more plausible that actually speaks HTTP 1.1 (HTTP 1.0 is just about dead in the real world, and has been for ages), use httperf. However, I quite strongly dislike using it: it takes a long time to read enough of the documentation to figure out how to do supposedly simple things ... such as specifying a URL!
Agreed. But I have already understand what its command arguments mean. The following slide describes it. http://www.mew.org/~kazu/material/2011-mighttpd.pdf The real problem of httperf to me is - it is using select(). - it does not support IPv6.
My Haskell HTTP load tester is incomplete, but definitely solid enough for use now: https://github.com/mailrank/http-load-tester
I should point out that this URL is not public now. Probably this is accidental. I guess that you should re-open it. I tried http-load-tester before. Its documentation is not good enough at this momemnt. But I could execute http-load-tester somehow. Unfortunately, the results does not contains *units*. So, I cannot understand what the results mean. --Kazu

On Tue, Jul 19, 2011 at 6:56 PM, Kazu Yamamoto
I did not say we should use ab. I just said warp has a problem when we use ab.
Yup, I just wanted to be sure you steered clear of it for real work.
The real problem of httperf to me is - it is using select(). - it does not support IPv6.
Both solved by mine :-)
I should point out that this URL is not public now.
Try this instead: https://github.com/mailrank/pronk
I tried http-load-tester before. Its documentation is not good enough at this momemnt.
Yes, since there is none yet :-)
But I could execute http-load-tester somehow. Unfortunately, the results does not contains *units*.
The results as currently displayed all contain units.
participants (4)
-
Aristid Breitkreuz
-
Bryan O'Sullivan
-
Kazu Yamamoto
-
Michael Snoyman