[Icecast] Darkice "Buffer overrun": how to troubleshoot?

John Hicks johnlist at gulfbridge.net
Thu Jan 24 22:53:08 UTC 2008


We're running a darkice/icecast configuration to stream our LPFM radio 
station (and to provide a quick-n-dirty studio-transmitter-link). (See 
config data below.)

We're getting intermittent "Buffer overrun!" errors out of darkice, and 
we associate these with interruptions in our audio stream that are quite 
noticeable. These occur anywhere from once to ten times per hour.

I've moved the darkice server 30 miles to a completely different node 
and LAN configuration to rule out local network problems. I've maxed the 
scheduling priority on both darkice and icecast. I've upped the 
bufferSecs to 60. None of this has helped.

I'd appreciate any suggestions (or pointers to a how-to) on how to 
troubleshoot this.

I'm assuming something is interrupting the internet connection between 
our local darkice server and the remote icecast server (on 
serverbeach.com). Of course, it would be best to find the root cause of 
this and correct it. But short of that, I would think that we could 
tweak our configuration to increase the buffering on both sides to 
compensate for this. But there is precious documentation on how to do 
this. (It appears that icecast does no buffering whatsoever. Is that 
correct?)

Since icecast streaming is http-based and since http is tcp-based, I 
would think the tcp parameters would be important here. In particular, 
there is a tcp window size that would seem to be relevant to assuring a 
smooth stream. But I don't see anything about this in relationship to 
icecast streaming.

Again, I'd appreciate any suggestions (or pointers to a how-to) on how 
to troubleshoot this.

Thanks in advance,

John Hicks
Station Manager, WXBH-LP
http://wxbh.org/
http://wxbh.org:8000/stream.ogg

DarkIce 0.17.1 running on Ubuntu Feisty Faun
Icecast 2.3.1 running on RHES 4


DarkIce 0.17.1 -- darkice.cfg:

[general]
duration = 0
bufferSecs = 60

[input]
device = hw:2,0
sampleRate = 44100
bitsPerSample = 16
channel = 2

[icecast2-0]
bitrateMode = cbr
format = vorbis
bitrate = 128
quality = 0.8
server = wxbh.org
port = 8000
password = xxxxxxxx
mountPoint = stream.ogg
name = WXBH-LP - 92.7 - Louisville Community Radio -
description = Louisville Community Radio
url = wxbh.org
genre =
public = yes


Icecast 2.3.1 -- icecast.xml:

<icecast>
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>524288</queue-size>
        <client-timeout>60</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>600</source-timeout>
        <burst-on-connect>1</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>yyyyyyyyyyyy</source-password>
        <!-- Relays log in username 'relay' -->
        <relay-password>zzzzzzzzzz</relay-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>qqqqqqqq</admin-password>
    </authentication>

    <hostname>wxbh.org</hostname>

    <listen-socket>
        <port>8000</port>
    </listen-socket>
   
     <mount>
        <mount-name>/stream.ogg</mount-name>
        <fallback-mount>/Silence.ogg</fallback-mount>
        <fallback-override>1</fallback-override>
    </mount>

    <mount>
        <mount-name>/stream.mp3</mount-name>
    </mount>

    <fileserve>1</fileserve>

    <paths>
                <!-- basedir is only used if chroot is enabled -->
        <basedir>/usr/local/share/icecast</basedir>

        <!-- Note that if <chroot> is turned on below, these paths must both
             be relative to the new root, not the original root -->
        <logdir>/var/log/icecast</logdir>
        <webroot>/usr/local/share/icecast/web</webroot>
        <adminroot>/usr/local/share/icecast/admin</adminroot>
        <!-- <pidfile>/usr/local/share/icecast/icecast.pid</pidfile> -->

        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
        <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
        <logsize>10000</logsize> <!-- Max size of a logfile -->
         <logarchive>1</logarchive>
    </logging>

    <security>xxx
    </security>
</icecast>








More information about the Icecast mailing list