You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Chris Rolfe <sp...@telus.net> on 2003/09/18 12:16:50 UTC

DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Hi, 

My app logs are filled to bursting with stack traces from broken pipes while
serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
log clutter is hiding everything else.

Strange thing is these aren't the biggest files. 400k jpg's, etc., no
problem. The broken pipe exception occurs ONLY on the mp3's.

Any suggestions/clues?

Thanks, 
Chris

Running Tomcat 4.0.4 on an OS X (10.2) setup.

----------------------------------------------------------
NB: org.apache.catalina replaced by [*] to avoid wrapping.
----------------------------------------------------------
2003-09-17 10:03:07 StandardWrapperValve[default]: Servlet.service() for
servlet default threw exception
java.io.IOException: Broken pipe
 at java.net.SocketOutputStream.socketWrite(Native Method)
 at java.net.SocketOutputStream.write(SocketOutputStream.java:91)
 at [*]connector.ResponseBase.flushBuffer(ResponseBase.java:674)
 at [*]connector.HttpResponseBase.flushBuffer(HttpResponseBase.java:764)
 at [*]connector.ResponseBase.write(ResponseBase.java:647)
 at [*]connector.ResponseStream.write(ResponseStream.java:312)
 at [*]connector.http.HttpResponseStream.write(HttpResponseStream.java:189)
 at [*]servlets.DefaultServlet.copyRange(DefaultServlet.java:1903)
 at [*]servlets.DefaultServlet.copy(DefaultServlet.java:1652)
 at [*]servlets.DefaultServlet.serveResource(DefaultServlet.java:1197)
 at [*]servlets.DefaultServlet.doGet(DefaultServlet.java:519)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at 
[*]core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
247)
 at [*]core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at [*]core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at [*]core.StandardPipeline.invoke(StandardPipeline.java:472)
 at [*]core.ContainerBase.invoke(ContainerBase.java:943)
 at [*]core.StandardContextValve.invoke(StandardContextValve.java:190)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at [*]authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at [*]valves.CertificatesValve.invoke(CertificatesValve.java:246)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at [*]core.StandardPipeline.invoke(StandardPipeline.java:472)
 at [*]core.ContainerBase.invoke(ContainerBase.java:943)
 at [*]core.StandardContext.invoke(StandardContext.java:2347)
 at [*]core.StandardHostValve.invoke(StandardHostValve.java:180)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at [*]valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at [*]valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at [*]valves.AccessLogValve.invoke(AccessLogValve.java:468)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at [*]core.StandardPipeline.invoke(StandardPipeline.java:472)
 at [*]core.ContainerBase.invoke(ContainerBase.java:943)
 at [*]core.StandardEngineValve.invoke(StandardEngineValve.java:174)
 at [*]core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at [*]core.StandardPipeline.invoke(StandardPipeline.java:472)
 at [*]core.ContainerBase.invoke(ContainerBase.java:943)
 at [*]connector.http.HttpProcessor.process(HttpProcessor.java:1027)
 at [*]connector.http.HttpProcessor.run(HttpProcessor.java:1125)
 at java.lang.Thread.run(Thread.java:491)


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Remy Maucherat <re...@jboss.org>.
Chris Rolfe wrote:

> That's what I thought at first, but this happens 80-90% of the time on the
> 100k+ files. There are two files on the same page, one 100-200k dialog, and
> a 10-30k sentence. 
> 
> It seems to me unlikely the users are hitting stop that quickly and that
> often. These are reasonably fast university connections in a class setting.
> 
> Could it be another request hitting the server? Mishandling of partial GETs?
> 
> Related, the catalina Logger doesn't seem to take Filters (or am I missing
> something?). I'd like to keep this cruft (in the meantime) out of the log.

I had tested the partial GET with stuff like GetRight and WinAMP (and 
telnet, obviously). I believe the feature works fine.
This exception can only occur on a client disconnect, so the only way it 
could happen is if too many bytes are written (which, I belive, works fine).

BTW, if you run a fileserver on Tomcat (unusal, and not the most 
efficient server for that use, but it works), then I think you should 
try 5.0.x, such as 5.0.9 or 5.0.12.

-- 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rémy Maucherat
Senior Developer & Consultant
JBoss Group (Europe) SàRL
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx


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


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Remy Maucherat <re...@jboss.org>.
Chris Rolfe wrote:

> That's what I thought at first, but this happens 80-90% of the time on the
> 100k+ files. There are two files on the same page, one 100-200k dialog, and
> a 10-30k sentence. 
> 
> It seems to me unlikely the users are hitting stop that quickly and that
> often. These are reasonably fast university connections in a class setting.
> 
> Could it be another request hitting the server? Mishandling of partial GETs?
> 
> Related, the catalina Logger doesn't seem to take Filters (or am I missing
> something?). I'd like to keep this cruft (in the meantime) out of the log.

I had tested the partial GET with stuff like GetRight and WinAMP (and 
telnet, obviously). I believe the feature works fine.
This exception can only occur on a client disconnect, so the only way it 
could happen is if too many bytes are written (which, I belive, works fine).

BTW, if you run a fileserver on Tomcat (unusal, and not the most 
efficient server for that use, but it works), then I think you should 
try 5.0.x, such as 5.0.9 or 5.0.12.

-- 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rémy Maucherat
Senior Developer & Consultant
JBoss Group (Europe) SàRL
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Chris Rolfe <sp...@telus.net>.
Thanks for both responses. I've got a better idea now what to test.

Remy's suggestion of extra bytes being written might plausible, espec. as
these are Mac OS files. Sometimes the Apple resource fork messes with little
server minds. 

In the near future, I'll also upgrade to 5.x and  move audio + photos onto a
different box, but that's a few regression tests away yet.

I have been using telnet, jmeter and a RequestDumper valve, but I haven't
set up a test plan to bang on the mp3s. Might be worth simulating 20 users
on a random timer and see what happens.

Anyway, thanks for the help. I'll post back any further findings in case
someone's interested.

Cheers,

Chris
 

on 9/18/03 5:10 AM, Tim Funk wrote:

> I think in > 4.1.24  those messages have been eliminated. Do you get the same
> errors with wget or similar? It could be the player is sending wacky requests.
> 
> Otherwise - at 4.0.4 - I'm out of ideas.
> 
> -Tim
> 


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


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Chris Rolfe <sp...@telus.net>.
Thanks for both responses. I've got a better idea now what to test.

Remy's suggestion of extra bytes being written might plausible, espec. as
these are Mac OS files. Sometimes the Apple resource fork messes with little
server minds. 

In the near future, I'll also upgrade to 5.x and  move audio + photos onto a
different box, but that's a few regression tests away yet.

I have been using telnet, jmeter and a RequestDumper valve, but I haven't
set up a test plan to bang on the mp3s. Might be worth simulating 20 users
on a random timer and see what happens.

Anyway, thanks for the help. I'll post back any further findings in case
someone's interested.

Cheers,

Chris
 

on 9/18/03 5:10 AM, Tim Funk wrote:

> I think in > 4.1.24  those messages have been eliminated. Do you get the same
> errors with wget or similar? It could be the player is sending wacky requests.
> 
> Otherwise - at 4.0.4 - I'm out of ideas.
> 
> -Tim
> 


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Tim Funk <fu...@joedog.org>.
I think in > 4.1.24  those messages have been eliminated. Do you get the same 
errors with wget or similar? It could be the player is sending wacky requests.

Otherwise - at 4.0.4 - I'm out of ideas.

-Tim

Chris Rolfe wrote:
> That's what I thought at first, but this happens 80-90% of the time on the
> 100k+ files. There are two files on the same page, one 100-200k dialog, and
> a 10-30k sentence. 
> 
> It seems to me unlikely the users are hitting stop that quickly and that
> often. These are reasonably fast university connections in a class setting.
> 
> Could it be another request hitting the server? Mishandling of partial GETs?
> 
> Related, the catalina Logger doesn't seem to take Filters (or am I missing
> something?). I'd like to keep this cruft (in the meantime) out of the log.
> 
> Chris
> 
> 
> on 9/18/03 3:57 AM, Tim Funk wrote:
> 
> 
>>Broken pipe means the client the aborted the request which is normal for mp3
>>since users probably stop listening to the song early.
>>
>>-Tim
>>
>>Chris Rolfe wrote:
>>
>>
>>>Hi, 
>>>
>>>My app logs are filled to bursting with stack traces from broken pipes while
>>>serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
>>>log clutter is hiding everything else.
>>>
>>>Strange thing is these aren't the biggest files. 400k jpg's, etc., no
>>>problem. The broken pipe exception occurs ONLY on the mp3's.
>>>
>>>Any suggestions/clues?
>>>
>>>Thanks, 
>>>Chris
>>>
>>>Running Tomcat 4.0.4 on an OS X (10.2) setup.
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> 


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Tim Funk <fu...@joedog.org>.
I think in > 4.1.24  those messages have been eliminated. Do you get the same 
errors with wget or similar? It could be the player is sending wacky requests.

Otherwise - at 4.0.4 - I'm out of ideas.

-Tim

Chris Rolfe wrote:
> That's what I thought at first, but this happens 80-90% of the time on the
> 100k+ files. There are two files on the same page, one 100-200k dialog, and
> a 10-30k sentence. 
> 
> It seems to me unlikely the users are hitting stop that quickly and that
> often. These are reasonably fast university connections in a class setting.
> 
> Could it be another request hitting the server? Mishandling of partial GETs?
> 
> Related, the catalina Logger doesn't seem to take Filters (or am I missing
> something?). I'd like to keep this cruft (in the meantime) out of the log.
> 
> Chris
> 
> 
> on 9/18/03 3:57 AM, Tim Funk wrote:
> 
> 
>>Broken pipe means the client the aborted the request which is normal for mp3
>>since users probably stop listening to the song early.
>>
>>-Tim
>>
>>Chris Rolfe wrote:
>>
>>
>>>Hi, 
>>>
>>>My app logs are filled to bursting with stack traces from broken pipes while
>>>serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
>>>log clutter is hiding everything else.
>>>
>>>Strange thing is these aren't the biggest files. 400k jpg's, etc., no
>>>problem. The broken pipe exception occurs ONLY on the mp3's.
>>>
>>>Any suggestions/clues?
>>>
>>>Thanks, 
>>>Chris
>>>
>>>Running Tomcat 4.0.4 on an OS X (10.2) setup.
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> 


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


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Chris Rolfe <sp...@telus.net>.
That's what I thought at first, but this happens 80-90% of the time on the
100k+ files. There are two files on the same page, one 100-200k dialog, and
a 10-30k sentence. 

It seems to me unlikely the users are hitting stop that quickly and that
often. These are reasonably fast university connections in a class setting.

Could it be another request hitting the server? Mishandling of partial GETs?

Related, the catalina Logger doesn't seem to take Filters (or am I missing
something?). I'd like to keep this cruft (in the meantime) out of the log.

Chris


on 9/18/03 3:57 AM, Tim Funk wrote:

> Broken pipe means the client the aborted the request which is normal for mp3
> since users probably stop listening to the song early.
> 
> -Tim
> 
> Chris Rolfe wrote:
> 
>> Hi, 
>> 
>> My app logs are filled to bursting with stack traces from broken pipes while
>> serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
>> log clutter is hiding everything else.
>> 
>> Strange thing is these aren't the biggest files. 400k jpg's, etc., no
>> problem. The broken pipe exception occurs ONLY on the mp3's.
>> 
>> Any suggestions/clues?
>> 
>> Thanks, 
>> Chris
>> 
>> Running Tomcat 4.0.4 on an OS X (10.2) setup.
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 


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


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Chris Rolfe <sp...@telus.net>.
That's what I thought at first, but this happens 80-90% of the time on the
100k+ files. There are two files on the same page, one 100-200k dialog, and
a 10-30k sentence. 

It seems to me unlikely the users are hitting stop that quickly and that
often. These are reasonably fast university connections in a class setting.

Could it be another request hitting the server? Mishandling of partial GETs?

Related, the catalina Logger doesn't seem to take Filters (or am I missing
something?). I'd like to keep this cruft (in the meantime) out of the log.

Chris


on 9/18/03 3:57 AM, Tim Funk wrote:

> Broken pipe means the client the aborted the request which is normal for mp3
> since users probably stop listening to the song early.
> 
> -Tim
> 
> Chris Rolfe wrote:
> 
>> Hi, 
>> 
>> My app logs are filled to bursting with stack traces from broken pipes while
>> serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
>> log clutter is hiding everything else.
>> 
>> Strange thing is these aren't the biggest files. 400k jpg's, etc., no
>> problem. The broken pipe exception occurs ONLY on the mp3's.
>> 
>> Any suggestions/clues?
>> 
>> Thanks, 
>> Chris
>> 
>> Running Tomcat 4.0.4 on an OS X (10.2) setup.
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Tim Funk <fu...@joedog.org>.
Broken pipe means the client the aborted the request which is normal for mp3 
since users probably stop listening to the song early.

-Tim

Chris Rolfe wrote:

> Hi, 
> 
> My app logs are filled to bursting with stack traces from broken pipes while
> serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
> log clutter is hiding everything else.
> 
> Strange thing is these aren't the biggest files. 400k jpg's, etc., no
> problem. The broken pipe exception occurs ONLY on the mp3's.
> 
> Any suggestions/clues?
> 
> Thanks, 
> Chris
> 
> Running Tomcat 4.0.4 on an OS X (10.2) setup.
>  


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


Re: DefaultServlet throws a LOT of broken pipe exceptions on mp3s

Posted by Tim Funk <fu...@joedog.org>.
Broken pipe means the client the aborted the request which is normal for mp3 
since users probably stop listening to the song early.

-Tim

Chris Rolfe wrote:

> Hi, 
> 
> My app logs are filled to bursting with stack traces from broken pipes while
> serving embedded mp3 (~100k) files. The files serve ok (status 200), but the
> log clutter is hiding everything else.
> 
> Strange thing is these aren't the biggest files. 400k jpg's, etc., no
> problem. The broken pipe exception occurs ONLY on the mp3's.
> 
> Any suggestions/clues?
> 
> Thanks, 
> Chris
> 
> Running Tomcat 4.0.4 on an OS X (10.2) setup.
>