icecast with +- 1100 users eats 1 gig memory and crashes ...
Icecast 2.2.0 on Linux Fedora Core 1 (running on a dell 2650) uses about 1 giga of memory when 1100 users are connected and eventually crashes (icecast process stops) without meaningfull info in log or coredump files ...
The icecast front-end servers (to which users can connect) get their 44 mp3 sources from an icecast relay server (to which encoders or other servers can connect) using the master relay function. Additionally the front-ends use also the icecast fileserving. I will paste both the front-end and relay configuration files :
Front-end configuration file :
<icecast>
<limits>
<clients>5000</clients>
<sources>75</sources>
<threadpool>5</threadpool>
<queue-size>102400</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
<authentication>
<source-password>foo</source-password>
<relay-password>foo</relay-password>
<admin-user>joe</admin-user>
<admin-password>foo</admin-password>
</authentication>
<hostname>fe1.foo.bar</hostname>
<listen-socket>
<port>8000</port>
<bind-address>A.B.29.12</bind-address>
</listen-socket>
<listen-socket>
<port>8000</port>
<bind-address>C.D.1.12</bind-address>
</listen-socket>
<master-server>A.B.29.51</master-server>
<master-server-port>8000</master-server-port>
<master-update-interval>120</master-update-interval>
<master-password>foo</master-password>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/var/log/icecast</logdir>
<webroot>/streampower/customers</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
<alias source="/radio1-mid" dest="/radio1-mid.mp3"/>
<alias source="/radio1-low" dest="/radio1-low.mp3"/>
<alias source="/radio1-high" dest="/radio1-high.mp3"/>
<alias source="/ra2vlb-mid" dest="/ra2vlb-mid.mp3"/>
<alias source="/ra2vlb-low" dest="/ra2vlb-low.mp3"/>
<alias source="/ra2vlb-high" dest="/ra2vlb-high.mp3"/>
<alias source="/ra2ant-mid" dest="/ra2ant-mid.mp3"/>
<alias source="/ra2ant-low" dest="/ra2ant-low.mp3"/>
<alias source="/ra2ant-high" dest="/ra2ant-high.mp3"/>
<alias source="/ra2lim-mid" dest="/ra2lim-mid.mp3"/>
<alias source="/ra2lim-low" dest="/ra2lim-low.mp3"/>
<alias source="/ra2lim-high" dest="/ra2lim-high.mp3"/>
<alias source="/ra2ovl-mid" dest="/ra2ovl-mid.mp3"/>
<alias source="/ra2ovl-low" dest="/ra2ovl-low.mp3"/>
<alias source="/ra2ovl-high" dest="/ra2ovl-high.mp3"/>
<alias source="/ra2wvl-mid" dest="/ra2wvl-mid.mp3"/>
<alias source="/ra2wvl-low" dest="/ra2wvl-low.mp3"/>
<alias source="/ra2wvl-high" dest="/ra2wvl-high.mp3"/>
<alias source="/klara-mid" dest="/klara-mid.mp3"/>
<alias source="/klara-low" dest="/klara-low.mp3"/>
<alias source="/klara-high" dest="/klara-high.mp3"/>
<alias source="/klaracontinuo-mid" dest="/klaracontinuo-mid.mp3"/>
<alias source="/klaracontinuo-low" dest="/klaracontinuo-low.mp3"/>
<alias source="/klaracontinuo-high" dest="/klaracontinuo-high.mp3"/>
<alias source="/stubru-mid" dest="/stubru-mid.mp3"/>
<alias source="/stubru-low" dest="/stubru-low.mp3"/>
<alias source="/stubru-high" dest="/stubru-high.mp3"/>
<alias source="/donna-mid" dest="/donna-mid.mp3"/>
<alias source="/donna-low" dest="/donna-low.mp3"/>
<alias source="/donna-high" dest="/donna-high.mp3"/>
<alias source="/donnahitbits-mid" dest="/donnahitbits-mid.mp3"/>
<alias source="/donnahitbits-low" dest="/donnahitbits-low.mp3"/>
<alias source="/donnahitbits-high" dest="/donnahitbits-high.mp3"/>
<alias source="/sporza-mid" dest="/sporza-mid.mp3"/>
<alias source="/sporza-low" dest="/sporza-low.mp3"/>
<alias source="/sporza-high" dest="/sporza-high.mp3"/>
<alias source="/rvi-mid" dest="/rvi-mid.mp3"/>
<alias source="/rvi-low" dest="/rvi-low.mp3"/>
<alias source="/rvi-high" dest="/rvi-high.mp3"/>
<alias source="/reserve-mid" dest="/reserve-mid.mp3"/>
<alias source="/reserve-low" dest="/reserve-low.mp3"/>
<alias source="/reserve-high" dest="/reserve-high.mp3"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>1</loglevel>
</logging>
<security>
<chroot>0</chroot>
</security>
</icecast>
Relay configuration file :
<icecast>
<limits>
<clients>1000</clients>
<sources>100</sources>
<threadpool>5</threadpool>
<queue-size>102400</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
<authentication>
<source-password>foo</source-password>
<relay-password>foo</relay-password>
<admin-user>joe</admin-user>
<admin-password>foo</admin-password>
</authentication>
<hostname>relay.foo.bar</hostname>
<listen-socket>
<port>8000</port>
<bind-address>A.B.29.51</bind-address>
</listen-socket>
<listen-socket>
<port>8000</port>
<bind-address>W.X.14.223</bind-address>
</listen-socket>
<listen-socket>
<port>8000</port>
<bind-address>Y.Z.112.16</bind-address>
</listen-socket>
<!-- Radio 1 -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/radio1-mid.mp3</mount>
<local-mount>/radio1-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/radio1-low.mp3</mount>
<local-mount>/radio1-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/radio1-high.mp3</mount>
<local-mount>/radio1-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Vlaams Brabant -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2vlb-mid.mp3</mount>
<local-mount>/ra2vlb-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2vlb-low.mp3</mount>
<local-mount>/ra2vlb-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2vlb-high.mp3</mount>
<local-mount>/ra2vlb-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Antwerpen -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ant-mid.mp3</mount>
<local-mount>/ra2ant-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ant-low.mp3</mount>
<local-mount>/ra2ant-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ant-high.mp3</mount>
<local-mount>/ra2ant-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Limburg -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2lim-mid.mp3</mount>
<local-mount>/ra2lim-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2lim-low.mp3</mount>
<local-mount>/ra2lim-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2lim-high.mp3</mount>
<local-mount>/ra2lim-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Oost Vlaanderen -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ovl-mid.mp3</mount>
<local-mount>/ra2ovl-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ovl-low.mp3</mount>
<local-mount>/ra2ovl-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ovl-high.mp3</mount>
<local-mount>/ra2ovl-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 West Vlaanderen -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2wvl-mid.mp3</mount>
<local-mount>/ra2wvl-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2wvl-low.mp3</mount>
<local-mount>/ra2wvl-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2wvl-high.mp3</mount>
<local-mount>/ra2wvl-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Klara -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klara-mid.mp3</mount>
<local-mount>/klara-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klara-low.mp3</mount>
<local-mount>/klara-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klara-high.mp3</mount>
<local-mount>/klara-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Klara Continuo -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klaracontinuo-mid.mp3</mount>
<local-mount>/klaracontinuo-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klaracontinuo-low.mp3</mount>
<local-mount>/klaracontinuo-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klaracontinuo-high.mp3</mount>
<local-mount>/klaracontinuo-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Studio Brussel -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/stubru-mid.mp3</mount>
<local-mount>/stubru-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/stubru-low.mp3</mount>
<local-mount>/stubru-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/stubru-high.mp3</mount>
<local-mount>/stubru-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Donna -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donna-mid.mp3</mount>
<local-mount>/donna-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donna-low.mp3</mount>
<local-mount>/donna-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donna-high.mp3</mount>
<local-mount>/donna-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Donna Hit Bits -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donnahitbits-mid.mp3</mount>
<local-mount>/donnahitbits-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donnahitbits-low.mp3</mount>
<local-mount>/donnahitbits-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donnahitbits-high.mp3</mount>
<local-mount>/donnahitbits-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Sporza -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/sporza-mid.mp3</mount>
<local-mount>/sporza-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/sporza-low.mp3</mount>
<local-mount>/sporza-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/sporza-high.mp3</mount>
<local-mount>/sporza-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio Vlaanderen Internationaal -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/rvi-mid.mp3</mount>
<local-mount>/rvi-mid.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/rvi-low.mp3</mount>
<local-mount>/rvi-low.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/rvi-high.mp3</mount>
<local-mount>/rvi-high.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<!-- Reserve -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/reserve-mid.mp3</mount>
<local-mount>/reserve-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/reserve-low.mp3</mount>
<local-mount>/reserve-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/reserve-high.mp3</mount>
<local-mount>/reserve-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Extra -->
<relay>
<server>G.H.88.79</server>
<port>80</port>
<mount>/high.ogg</mount>
<local-mount>/urgent-high.ogg</local-mount>
<hidden>1</hidden>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>G.H.88.79</server>
<port>80</port>
<mount>/low.ogg</mount>
<local-mount>/urgent-low.ogg</local-mount>
<hidden>1</hidden>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<fileserve>0</fileserve>
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/var/log/icecast</logdir>
<webroot>/usr/share/icecast/web</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>1</loglevel>
</logging>
<security>
<chroot>0</chroot>
</security>
</icecast>
Could the crash be caused by a memory leak ?