You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by eds2103 <sc...@gmail.com> on 2009/07/20 23:49:51 UTC

Large Portion of TCP Threads Timing Out Despite Quick Receipt of Correct Data

I am using JMeter to load test a TCP server.  Every time I run a test, some
large portion (like half) of my threads are timing out.  The very strange
thing is that the threads that time out (like all the other threads) have
received the correct response data.  And according to the server output they
received this correct response data almost very quickly (like 300 ms), no
where near the timeout.  What seems to be happening is all the threads are
receiving the correct data very quickly, as desired, but for some reason, a
large portion of the threads aren't closing as soon as they've received
their response. They are just sitting there, failing to close.  And so they
timeout and jmeter closes them, and yet JMeter realizes they have succeeded
so it gives them success value of "True". Yet it records their response time
as being a little over the timeout value (10,000 or 20,000 ms, whatever i
set it to... even though, as i said earlier, they are receiving their
correct repsonse after like 300 ms).  Does anyone know why this might be
happening? We are not having this problem with our JDBC Sampler.


We are using a Java TCP socket, which we create like this:

     Server Socket server = new ServerSocket(port);
     Socket s=server.accept();

And the way we write out to the socket in response to request from JMeter
client threads looks like this:

     BufferedOutputStream bos = new
BufferedOutputStream(s.getOutputStream());
     bos.write("test response data".getBytes());
     bos.flush();


We tried adding more ramp-up time but that didn't help at all. Still about
half timed out for no apparent reason.

Any help appreciated.

We are trying to do performance analysis for school but we can't use our
data for average response time or throughput or anything if half the
response time values are just roughly equal to the timeout and thus way, way
off.
-- 
View this message in context: http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24578177.html
Sent from the JMeter - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Large Portion of TCP Threads Timing Out Despite Quick Receipt of Correct Data

Posted by Deepak Shetty <sh...@gmail.com>.
Hi
is this the complete code?
Shouldnt you close the output stream and the client socket?
regards
deepak

On Sun, Aug 2, 2009 at 7:08 PM, eds2103 <sc...@gmail.com> wrote:

>
> Nope, not sure. Why might it not be received? How could I make sure it is
> sent?
>
> Perhaps there is a better way to do it rather than:
>
> >      BufferedOutputStream bos = new
> >  BufferedOutputStream(s.getOutputStream());
> >      bos.write("test response data".getBytes());
> >      bos.flush();
>
> ? Can anyone suggest a better way to send response data over the tcp
> socket?
>
> Or, perhaps it's some issue with threading? perhaps the threads arent
> terminating?
>
> Eric
>
>
> sebb-2-2 wrote:
> >
> > On 20/07/2009, eds2103 <sc...@gmail.com> wrote:
> >>
> >>  I am using JMeter to load test a TCP server.  Every time I run a test,
> >> some
> >>  large portion (like half) of my threads are timing out.  The very
> >> strange
> >>  thing is that the threads that time out (like all the other threads)
> >> have
> >>  received the correct response data.  And according to the server output
> >> they
> >>  received this correct response data almost very quickly (like 300 ms),
> >> no
> >>  where near the timeout.  What seems to be happening is all the threads
> >> are
> >>  receiving the correct data very quickly, as desired, but for some
> >> reason, a
> >>  large portion of the threads aren't closing as soon as they've received
> >>  their response. They are just sitting there, failing to close.  And so
> >> they
> >>  timeout and jmeter closes them, and yet JMeter realizes they have
> >> succeeded
> >>  so it gives them success value of "True". Yet it records their response
> >> time
> >>  as being a little over the timeout value (10,000 or 20,000 ms, whatever
> >> i
> >>  set it to... even though, as i said earlier, they are receiving their
> >>  correct repsonse after like 300 ms).  Does anyone know why this might
> be
> >>  happening? We are not having this problem with our JDBC Sampler.
> >>
> >
> > JMeter only recognises the response as being complete if it sees the EOL
> > byte.
> > Otherwise it will wait until timeout.
> >
> > Are you sure that the EOL byte is set correctly and is being received?
> >
> >>  We are using a Java TCP socket, which we create like this:
> >>
> >>      Server Socket server = new ServerSocket(port);
> >>      Socket s=server.accept();
> >>
> >>  And the way we write out to the socket in response to request from
> >> JMeter
> >>  client threads looks like this:
> >>
> >>      BufferedOutputStream bos = new
> >>  BufferedOutputStream(s.getOutputStream());
> >>      bos.write("test response data".getBytes());
> >>      bos.flush();
> >>
> >>
> >>  We tried adding more ramp-up time but that didn't help at all. Still
> >> about
> >>  half timed out for no apparent reason.
> >>
> >>  Any help appreciated.
> >>
> >>  We are trying to do performance analysis for school but we can't use
> our
> >>  data for average response time or throughput or anything if half the
> >>  response time values are just roughly equal to the timeout and thus
> way,
> >> way
> >>  off.
> >>
> >> --
> >>  View this message in context:
> >>
> http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24578177.html
> >>  Sent from the JMeter - User mailing list archive at Nabble.com.
> >>
> >>
> >>  ---------------------------------------------------------------------
> >>  To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> >>  For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24784202.html
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>

Re: Large Portion of TCP Threads Timing Out Despite Quick Receipt of Correct Data

Posted by sebb <se...@gmail.com>.
On 03/08/2009, eds2103 <sc...@gmail.com> wrote:
>
>  Nope, not sure. Why might it not be received? How could I make sure it is
>  sent?

Please read:

http://jakarta.apache.org/jmeter/usermanual/component_reference.html#TCP_Sampler

"TCPClientImpl
This implementation is fairly basic. When reading the response, it
reads until the end of line byte, if this is defined by setting the
property tcp.eolByte , otherwise until the end of the input stream."

That should also say " or until a timeout occurs".

What did you set tcp.eolByte to? It's not set by default.
Are you sending that byte value?

>  Perhaps there is a better way to do it rather than:
>
>
>  >      BufferedOutputStream bos = new
>  >  BufferedOutputStream(s.getOutputStream());
>  >      bos.write("test response data".getBytes());
>  >      bos.flush();
>
>
> ? Can anyone suggest a better way to send response data over the tcp socket?
>
>  Or, perhaps it's some issue with threading? perhaps the threads arent
>  terminating?
>
>  Eric
>
>
>
>  sebb-2-2 wrote:
>  >
>  > On 20/07/2009, eds2103 <sc...@gmail.com> wrote:
>  >>
>  >>  I am using JMeter to load test a TCP server.  Every time I run a test,
>  >> some
>  >>  large portion (like half) of my threads are timing out.  The very
>  >> strange
>  >>  thing is that the threads that time out (like all the other threads)
>  >> have
>  >>  received the correct response data.  And according to the server output
>  >> they
>  >>  received this correct response data almost very quickly (like 300 ms),
>  >> no
>  >>  where near the timeout.  What seems to be happening is all the threads
>  >> are
>  >>  receiving the correct data very quickly, as desired, but for some
>  >> reason, a
>  >>  large portion of the threads aren't closing as soon as they've received
>  >>  their response. They are just sitting there, failing to close.  And so
>  >> they
>  >>  timeout and jmeter closes them, and yet JMeter realizes they have
>  >> succeeded
>  >>  so it gives them success value of "True". Yet it records their response
>  >> time
>  >>  as being a little over the timeout value (10,000 or 20,000 ms, whatever
>  >> i
>  >>  set it to... even though, as i said earlier, they are receiving their
>  >>  correct repsonse after like 300 ms).  Does anyone know why this might be
>  >>  happening? We are not having this problem with our JDBC Sampler.
>  >>
>  >
>  > JMeter only recognises the response as being complete if it sees the EOL
>  > byte.
>  > Otherwise it will wait until timeout.
>  >
>  > Are you sure that the EOL byte is set correctly and is being received?
>  >
>  >>  We are using a Java TCP socket, which we create like this:
>  >>
>  >>      Server Socket server = new ServerSocket(port);
>  >>      Socket s=server.accept();
>  >>
>  >>  And the way we write out to the socket in response to request from
>  >> JMeter
>  >>  client threads looks like this:
>  >>
>  >>      BufferedOutputStream bos = new
>  >>  BufferedOutputStream(s.getOutputStream());
>  >>      bos.write("test response data".getBytes());
>  >>      bos.flush();
>  >>
>  >>
>  >>  We tried adding more ramp-up time but that didn't help at all. Still
>  >> about
>  >>  half timed out for no apparent reason.
>  >>
>  >>  Any help appreciated.
>  >>
>  >>  We are trying to do performance analysis for school but we can't use our
>  >>  data for average response time or throughput or anything if half the
>  >>  response time values are just roughly equal to the timeout and thus way,
>  >> way
>  >>  off.
>  >>
>  >> --
>  >>  View this message in context:
>  >> http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24578177.html
>  >>  Sent from the JMeter - User mailing list archive at Nabble.com.
>  >>
>  >>
>  >>  ---------------------------------------------------------------------
>  >>  To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>  >>  For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>  >>
>  >>
>  >
>  > ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>  > For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>  >
>  >
>  >
>
>
> --
>  View this message in context: http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24784202.html
>
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>  For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Large Portion of TCP Threads Timing Out Despite Quick Receipt of Correct Data

Posted by eds2103 <sc...@gmail.com>.
Nope, not sure. Why might it not be received? How could I make sure it is
sent? 

Perhaps there is a better way to do it rather than:

>      BufferedOutputStream bos = new
>  BufferedOutputStream(s.getOutputStream());
>      bos.write("test response data".getBytes());
>      bos.flush();

? Can anyone suggest a better way to send response data over the tcp socket?

Or, perhaps it's some issue with threading? perhaps the threads arent
terminating?

Eric


sebb-2-2 wrote:
> 
> On 20/07/2009, eds2103 <sc...@gmail.com> wrote:
>>
>>  I am using JMeter to load test a TCP server.  Every time I run a test,
>> some
>>  large portion (like half) of my threads are timing out.  The very
>> strange
>>  thing is that the threads that time out (like all the other threads)
>> have
>>  received the correct response data.  And according to the server output
>> they
>>  received this correct response data almost very quickly (like 300 ms),
>> no
>>  where near the timeout.  What seems to be happening is all the threads
>> are
>>  receiving the correct data very quickly, as desired, but for some
>> reason, a
>>  large portion of the threads aren't closing as soon as they've received
>>  their response. They are just sitting there, failing to close.  And so
>> they
>>  timeout and jmeter closes them, and yet JMeter realizes they have
>> succeeded
>>  so it gives them success value of "True". Yet it records their response
>> time
>>  as being a little over the timeout value (10,000 or 20,000 ms, whatever
>> i
>>  set it to... even though, as i said earlier, they are receiving their
>>  correct repsonse after like 300 ms).  Does anyone know why this might be
>>  happening? We are not having this problem with our JDBC Sampler.
>>
> 
> JMeter only recognises the response as being complete if it sees the EOL
> byte.
> Otherwise it will wait until timeout.
> 
> Are you sure that the EOL byte is set correctly and is being received?
> 
>>  We are using a Java TCP socket, which we create like this:
>>
>>      Server Socket server = new ServerSocket(port);
>>      Socket s=server.accept();
>>
>>  And the way we write out to the socket in response to request from
>> JMeter
>>  client threads looks like this:
>>
>>      BufferedOutputStream bos = new
>>  BufferedOutputStream(s.getOutputStream());
>>      bos.write("test response data".getBytes());
>>      bos.flush();
>>
>>
>>  We tried adding more ramp-up time but that didn't help at all. Still
>> about
>>  half timed out for no apparent reason.
>>
>>  Any help appreciated.
>>
>>  We are trying to do performance analysis for school but we can't use our
>>  data for average response time or throughput or anything if half the
>>  response time values are just roughly equal to the timeout and thus way,
>> way
>>  off.
>>
>> --
>>  View this message in context:
>> http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24578177.html
>>  Sent from the JMeter - User mailing list archive at Nabble.com.
>>
>>
>>  ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>>  For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24784202.html
Sent from the JMeter - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Large Portion of TCP Threads Timing Out Despite Quick Receipt of Correct Data

Posted by sebb <se...@gmail.com>.
On 20/07/2009, eds2103 <sc...@gmail.com> wrote:
>
>  I am using JMeter to load test a TCP server.  Every time I run a test, some
>  large portion (like half) of my threads are timing out.  The very strange
>  thing is that the threads that time out (like all the other threads) have
>  received the correct response data.  And according to the server output they
>  received this correct response data almost very quickly (like 300 ms), no
>  where near the timeout.  What seems to be happening is all the threads are
>  receiving the correct data very quickly, as desired, but for some reason, a
>  large portion of the threads aren't closing as soon as they've received
>  their response. They are just sitting there, failing to close.  And so they
>  timeout and jmeter closes them, and yet JMeter realizes they have succeeded
>  so it gives them success value of "True". Yet it records their response time
>  as being a little over the timeout value (10,000 or 20,000 ms, whatever i
>  set it to... even though, as i said earlier, they are receiving their
>  correct repsonse after like 300 ms).  Does anyone know why this might be
>  happening? We are not having this problem with our JDBC Sampler.
>

JMeter only recognises the response as being complete if it sees the EOL byte.
Otherwise it will wait until timeout.

Are you sure that the EOL byte is set correctly and is being received?

>  We are using a Java TCP socket, which we create like this:
>
>      Server Socket server = new ServerSocket(port);
>      Socket s=server.accept();
>
>  And the way we write out to the socket in response to request from JMeter
>  client threads looks like this:
>
>      BufferedOutputStream bos = new
>  BufferedOutputStream(s.getOutputStream());
>      bos.write("test response data".getBytes());
>      bos.flush();
>
>
>  We tried adding more ramp-up time but that didn't help at all. Still about
>  half timed out for no apparent reason.
>
>  Any help appreciated.
>
>  We are trying to do performance analysis for school but we can't use our
>  data for average response time or throughput or anything if half the
>  response time values are just roughly equal to the timeout and thus way, way
>  off.
>
> --
>  View this message in context: http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24578177.html
>  Sent from the JMeter - User mailing list archive at Nabble.com.
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>  For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Large Portion of TCP Threads Timing Out Despite Quick Receipt of Correct Data

Posted by eds2103 <sc...@gmail.com>.
Bump. Please help.
-- 
View this message in context: http://www.nabble.com/Large-Portion-of-TCP-Threads-Timing-Out-Despite-Quick-Receipt-of-Correct-Data-tp24578177p24783569.html
Sent from the JMeter - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org