On Wed, 2020-11-18 at 23:39 +0100, Oleg Kalnichevski wrote:
> On Wed, 2020-11-18 at 21:20 +0000, jwhit...@redhat.com wrote:
> > Hi, 
> >  I am benchmarking HttpCore 5.1-Beta. When running under load HTTP
> > clear text tests I am seeing frequent protocol errors reported.
> > Using
> > Wireshark to trace the interface.
> > 
> > No. Time    Cumulative      Protocol        Length  Info    UTC
> > 29  0.093415950     2572    TCP     66      37020 → 80 [ACK]
> > Seq=554 Ack=90 Win=65536 Len=0 TSval=3201662568 TSecr=3201662568    
> > 2020-11-18 18:09:26.134336499
> > 30  0.094209181     2749    HTTP2   177     HEADERS[9]: GET 
> > http://localhost/api/content/maven/remote/central/org/codehaus/mojo/build-helper-maven-plugin/3.0.0/build-helper-maven-plugin-3.0.0.pom
> >     2020-11-18 18:09:26.135129730
> > 31  0.094291017     2828    HTTP2   79      RST_STREAM[9]   2020-
> > 11-18 18:09:26.135211566
> > 32  0.094304480     2894    TCP     66      37020 → 80 [ACK]
> > Seq=665 Ack=103 Win=65536 Len=0 TSval=3201662569 TSecr=3201662569   
> > 2020-11-18 18:09:26.135225029
> > 
> > 
> >  Immediately after the client issues a GET method request the
> > server
> > is
> > sending RST_STREAM.
> > 
> > Frame 31: 79 bytes on wire (632 bits), 79 bytes captured (632 bits)
> > on
> > interface lo, id 0
> > Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst:
> > 00:00:00_00:00:00 (00:00:00:00:00:00)
> > Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1
> > Transmission Control Protocol, Src Port: 80, Dst Port: 37020, Seq:
> > 90,
> > Ack: 665, Len: 13
> >     Source Port: 80
> >     Destination Port: 37020
> >     [Stream index: 0]
> >     [TCP Segment Len: 13]
> >     Sequence number: 90    (relative sequence number)
> >     Sequence number (raw): 3817038059
> >     [Next sequence number: 103    (relative sequence number)]
> >     Acknowledgment number: 665    (relative ack number)
> >     Acknowledgment number (raw): 3962548455
> >     1000 .... = Header Length: 32 bytes (8)
> >     Flags: 0x018 (PSH, ACK)
> >     Window size value: 512
> >     [Calculated window size: 65536]
> >     [Window size scaling factor: 128]
> >     Checksum: 0xfe35 [unverified]
> >     [Checksum Status: Unverified]
> >     Urgent pointer: 0
> >     Options: (12 bytes), No-Operation (NOP), No-Operation (NOP),
> > Timestamps
> >     [SEQ/ACK analysis]
> >     [Timestamps]
> >     TCP payload (13 bytes)
> >     [PDU Size: 13]
> > HyperText Transfer Protocol 2
> >     Stream: RST_STREAM, Stream ID: 9, Length 4
> >         Length: 4
> >         Type: RST_STREAM (3)
> >         Flags: 0x00
> >         0... .... .... .... .... .... .... .... = Reserved: 0x0
> >         .000 0000 0000 0000 0000 0000 0000 1001 = Stream
> > Identifier:
> > 9
> >         Error: PROTOCOL_ERROR (1)
> > 
> > 
> >  The set-up I have is running Apache Httpd to serve content with
> > h2c
> > protocol. The load driver pushing GET requests for files. A mixture
> > of
> > text or binary.
> > 
> >  I checked JIRA and found no reported issues. I know this as BETA
> > release I'm using. Is this api expected to work without issue ?
> > 
> > Regards,
> > Jeremy
> > 
> > The client driver is based on this example [1].
> > 
> > $ java -version
> > openjdk version "11.0.9" 2020-10-20
> > OpenJDK Runtime Environment 18.9 (build 11.0.9+11)
> > OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11, mixed mode,
> > sharing)
> > $ uname -a
> > Linux burtha-f31 5.8.17-100.fc31.x86_64 #1 SMP Thu Oct 29 18:58:48
> > UTC
> > 2020 x86_64 x86_64 x86_64 GNU/Linux
> > $
> > 
> > [1] 
> > https://hc.apache.org/httpcomponents-core-5.1.x/httpcore5-h2/examples/H2RequestExecutionExample.java
> > 
> 
> Hi Jeremy
> 
> I am not aware of such issue. This is not expected. However to be
> able
> to tell me I need to see the complete message exchange leading to a
> stream reset by the server.
> 
> Is there a chance you could put together a reproducer based on this
> docker image [1] or anything I could run locally?
> 
> Oleg
> 
> [1] 
> https://github.com/apache/httpcomponents-core/tree/master/httpcore5-testing/docker/apache-httpd
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
> For additional commands, e-mail: httpclient-users-h...@hc.apache.org
> 
Hi Oleg,
 Sure here is a reproducer using the simple benchmark that I've been
fixing.

you will need to....

a) get the branch i pushed [1]
b) get the artifacts to serve using httpd [2]
c) configure you httpd with a volume to serve the artifacts
d) install the 5.1-beta dependencies to your local maven repository
e) run the Maven package goal
f) run the benchmark [3]

 The field Main.LIMIT controls the number of artifacts to download.
 The argument to the java -jar command controls the number of download
repititions.
 The class eu.janinko.foobar.httpmetrics.Appache2TaskProvider is the
class that uses the httpcomponents-core api.

Jeremy

[1] 
https://github.com/whitingjr/http2performance/tree/reproducer-reset-error
[2] 
https://www.dropbox.com/sh/1twdn5hma67qh2l/AABcdDxPKR2EaJ4bJZ6Aut_2a?dl=0
[3] java -jar httpMetrics/target/httpMetrics-1.0-SNAPSHOT-jar-with-
dependencies.jar 1


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to