[Eisfair] slims zieh?==?utf-8?Q?t 100% Prozessorlast

Rene Hanke Rene.Hanke at gmx.net
Mi Aug 17 09:26:11 CEST 2016


Hallo!

Endlich Zeit für mehr Tests gefunden. Sollte hier zwischendurch was auf
Englisch stehen, liegt das daran, dass ich parallel mit Michael Herger
im englischen Forum nach einer Lösung suche.

Die derzeit installierten Pakete finden sich unten[1]. mysqueezebox.com
login wurde gesetzt und die plugins SuperDateTime und UPnP/DLNA
deaktiviert. Nach jedem Experiment wurden alle slimserver-Prozesse
mittels kill beendet und LMS nach den Veränderungen an der
/etc/init.d/slims mittels "/etc/init.d/slims start" gestartet.

- - - - - - - - - - - - - -
1. unmodifizierte /etc/init.d/slims:

    if [ "${START_SLIMS}" = "yes" ]
    then
        # set variable to an empty string if not set
        if [ "${SLIMS_OPTIONS+1}" = "" ]
        then
            SLIMS_OPTIONS=''
        fi
[...]
            cd ${ssdir}/
            su - slims -s /bin/sh -c "export LANG=${def_charset}; \
                                      ${ssdir}/slimserver.pl --daemon
--logdir=${logdir} --prefsdir=${prefsdir}     \
                                          ${prefsoption}
--pidfile=${pidfile} --logfile=${logfile} ${SLIMS_OPTIONS} \
                                          --noimage --novideo" >>
${startlogfile} 2>> ${startlogfile}



ps ax | grep slims

 4627 ?        RNs    0:14 /usr/bin/perl
/usr/local/slimserver/slimserver.pl --daemon --logdir=/var/slims/log
--prefsdir=/var/slims/prefs --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log --noimage --novideo
 4668 pts/1    SN+    0:00 /bin/sh /bin/grep slims


Processor load 100%

- - - - - - - - - - - - - -
2. modifizierte /etc/init.d/slims wie von Michael Herger vorgeschlagen:

    if [ "${START_SLIMS}" = "yes" ]
    then
        # set variable to an empty string if not set
        if [ "${SLIMS_OPTIONS+1}" = "1" ]
        then
            SLIMS_OPTIONS=''
        fi
[...]
            cd ${ssdir}/

su - slims -s /bin/sh -c "export LANG=${def_charset}; \
                                      ${ssdir}/slimserver.pl --daemon
--logdir=${logdir} --prefsdir=${prefsdir}     \
                                          ${prefsoption}
--pidfile=${pidfile} --logfile=${logfile} ${SLIMS_OPTIONS} \
                                          --noimage --novideo" >>
${startlogfile} 2>> ${startlogfile}



ps ax | grep slims

 4767 ?        RNs    0:18 /usr/bin/perl
/usr/local/slimserver/slimserver.pl --daemon --logdir=/var/slims/log
--prefsdir=/var/slims/prefs --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log --noimage --novideo
 4808 pts/1    SN+    0:00 /bin/sh /bin/grep slims


Processor load 100%

- - - - - - - - - - - - - -
3. Der "Dreckige Workaround" von mir:

    if [ "${START_SLIMS}" = "yes" ]
    then
        # set variable to an empty string if not set
        if [ "${SLIMS_OPTIONS+1}" = "" ]
        then
            SLIMS_OPTIONS=''
        fi
[...]
            cd ${ssdir}/
            su - slims -s /bin/sh -c "export LANG=${def_charset}; \
                                      ${ssdir}/slimserver.pl --daemon
--logdir=${logdir} --prefsdir=${prefsdir}     \
                                          ${prefsoption}
--pidfile=${pidfile} --logfile=${logfile} ${SLIMS_OPTIONS} \
                                          --noimage --novideo" >>
${startlogfile} 2>> ${startlogfile}

            # Restart to avoid um 100% CPU-usage
            sleep 10
            curl -silent -X POST -d
'{"id":0,"params":["",["restartserver"]],"method":"slim.request"}'
http://localhost:9000/jsonrpc.js



ps ax | grep slims

 5090 ?        SNs    0:20 /usr/bin/perl
/usr/local/slimserver/slimserver.pl /usr/local/slimserver/slimserver.pl
--logdir=/var/slims/log --prefsdir=/var/slims/prefs
--pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log --noimage --novideo
 5133 pts/1    SN+    0:00 /bin/sh /bin/grep slims

(doppeltes "slimserver.pl" aber kein "--daemon" mehr)

Processor load unter 2%

- - - - - - - - - - - - - -
4. Modifizierte /etc/init.d/slims ohne option "--daemon", stattdessen
senden des Prozesses in den Hintergrund. 

@Juergen: Das Skript kehrt hier im Gegensatz zu den anderen Versionen
nahezu sofortig zum command prompt zurück, vielleicht benötigt es hier
irgendwo ein "sleep", um Kollisionen mit anderen Befehlen zu vermeiden?

    if [ "${START_SLIMS}" = "yes" ]
    then
        # set variable to an empty string if not set
        if [ "${SLIMS_OPTIONS+1}" = "" ]
        then
            SLIMS_OPTIONS=''
        fi
[...]
            cd ${ssdir}/
            su - slims -s /bin/sh -c "export LANG=${def_charset}; \
                                      ${ssdir}/slimserver.pl
--logdir=${logdir} --prefsdir=${prefsdir}     \
                                          ${prefsoption}
--pidfile=${pidfile} --logfile=${logfile} ${SLIMS_OPTIONS} \
                                          --noimage --novideo" >>
${startlogfile} 2>> ${startlogfile} &



ps ax | grep slims

 5245 pts/0    SN     0:00 su - slims -s /bin/sh -c export
LANG=de_DE.utf-8;                                      
/usr/local/slimserver/slimserver.pl --logdir=/var/slims/log
--prefsdir=/var/slims/prefs                                             
  --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log                                 
          --noimage --novideo
 5254 ?        SNs    0:00 -sh -c export LANG=de_DE.utf-8;              
                        /usr/local/slimserver/slimserver.pl
--logdir=/var/slims/log --prefsdir=/var/slims/prefs                     
                          --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log                                 
          --noimage --novideo
 5271 ?        SN     0:11 /usr/bin/perl
/usr/local/slimserver/slimserver.pl --logdir=/var/slims/log
--prefsdir=/var/slims/prefs --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log --noimage --novideo
 5305 pts/1    SN+    0:00 /bin/sh /bin/grep slims

Wenn ich sämtliche zusätzlichen Leerzeichen im "su"-Befehl entferne,
wird das natürlich lesbarer:

 6172 pts/0    SN     0:00 su - slims -s /bin/sh -c export
LANG=de_DE.utf-8; /usr/local/slimserver/slimserver.pl
--logdir=/var/slims/log --prefsdir=/var/slims/prefs 
--pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log  --noimage --novideo
 6181 ?        SNs    0:00 -sh -c export LANG=de_DE.utf-8;
/usr/local/slimserver/slimserver.pl --logdir=/var/slims/log
--prefsdir=/var/slims/prefs  --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log  --noimage --novideo
 6198 ?        RN     0:07 /usr/bin/perl
/usr/local/slimserver/slimserver.pl --logdir=/var/slims/log
--prefsdir=/var/slims/prefs --pidfile=/var/run/slimserver.pid
--logfile=/var/slims/log/slimserver.log --noimage --novideo
 6232 pts/1    SN+    0:00 /bin/sh /bin/grep slims

(trotz der beiden zusätzlichen slimserver-Prozesse wird der LMS immer
noch korrekt und vollständig mittels "/etc/init.d/slims stop" beendet)

Processor load unter 2%

- - - - - - - - - - - - - -

Ich habe auch Michaels Vorschlag one *sämtliche* extra Leerzeichen
versucht, das bringt aber nichts.


Also sind meine unqualifizierten 2 Cent, dass es da wirklich einen
Fehler in der "--daemon" option des LMS gibt, zumindest im verwendeten
build. Ich bin aber nicht bewandert genug, um in die Tiefen der
slimserver.pl einzusteigen.


Liebe Grüße

René


- - - - - - - - - - - - - -

[1] List of currently installed packages 

   1. base                                                              
                         base                             2.7.4         
        2016-06-11
   2. crack-dict-small                                                  
                         security                         2.2.0         
        2013-08-30
   3. eiskernel                                                         
                         base                             2.22.0        
        2016-06-13
   4. eiskernel-smp                                                     
                         base                             2.22.0        
        2016-06-13
   5. geoip                                                             
                         netservices                      2.6.1         
        2016-07-10
   6. lame                                                              
                         multimedia                       2.6.0         
        2016-05-23
   7. libcares                                                          
                         lib                              2.6.0         
        2015-05-06
   8. libcurl                                                           
                         lib                              2.6.6         
        2016-05-05
   9. libdb                                                             
                         database                         2.6.1         
        2015-05-03
  10. libevent                                                          
                         lib                              2.6.0         
        2015-05-06
  11. libexif                                                           
                         lib                              2.6.0         
        2015-06-07
  12. libexpat                                                          
                         lib                              2.6.0         
        2015-05-06
  13. libfontconfig                                                     
                         lib                              2.6.1         
        2016-05-21
  14. libfreetype2                                                      
                         lib                              2.6.1         
        2016-05-21
  15. libgd                                                             
                         lib                              2.6.3         
        2016-06-24
  16. libgdbm                                                           
                         database                         2.6.0         
        2015-05-06
  17. libgif                                                            
                         lib                              2.6.1         
        2015-10-12
  18. libgmp                                                            
                         lib                              2.6.0         
        2015-04-19
  19. libjbig                                                           
                         lib                              2.6.0         
        2015-04-27
  20. libjpeg                                                           
                         lib                              2.6.1         
        2016-05-05
  21. libkrb5                                                           
                         lib                              2.6.1         
        2015-12-06
  22. libmetalink                                                       
                         lib                              2.6.1         
        2016-02-13
  23. libmysql                                                          
                         lib                              2.8.1         
        2016-02-27
  24. libpng                                                            
                         lib                              2.6.2         
        2016-05-05
  25. libpq-5                                                           
                         lib                              1.4.4         
        2013-03-03
  26. librtmp                                                           
                         lib                              2.6.3         
        2016-02-15
  27. libssh2                                                           
                         lib                              2.6.2         
        2016-03-04
  28. libssl                                                            
                         lib                              2.6.9         
        2016-05-07
  29. libtidyp                                                          
                         lib                              2.6.0         
        2015-05-06
  30. libtiff                                                           
                         lib                              2.6.2         
        2016-05-05
  31. libvpx                                                            
                         lib                              2.6.1         
        2016-06-18
  32. perl                                                              
                         plang                            2.6.1         
        2015-05-17
  33. perl_addons_01                                                    
                         plang                            2.6.3         
        2016-03-05
  34. perl_addons_02                                                    
                         plang                            2.6.1         
        2016-03-05
  35. perl_addons_03                                                    
                         plang                            2.6.1         
        2015-06-07
  36. rsync                                                             
                         netutils                         1.1.5         
        2014-10-01
  37. slims                                                             
                         netservices                      1.2.7         
        2015-06-07





Mehr Informationen über die Mailingliste Eisfair