ejabberd Server neuerdings instabil

Dieses Thema im Forum "Internet, lokale Netzwerke und Wireless Lan" wurde erstellt von brudell, 14.12.2013.

  1. #1 brudell, 14.12.2013
    brudell

    brudell Grünschnabel

    Dabei seit:
    14.12.2013
    Beiträge:
    3
    Zustimmungen:
    0
    Hi Leute,

    ich nutze auf meinem Raspberry Pi [Raspbian Linux wasar 3.10.23+ #608 PREEMPT Mon Dec 9 21:11:23 GMT 2013 armv6l GNU/Linux] einen ejabberd Server.

    Heute früh, 14.12.2013 um 3 Uhr, crashte der Server. Seither konnte ich ihn noch einmal starten. Im ejabberd.log ist nichts zusehen. Ich poste euch daher mal das aktuelle "Problem". Beim Starten schien es so, als ob eine zweite Instanz aktiv wäre, dies war jedoch zu keinem Zeitpunkt der Fall.

    Was läuft da schief?

    Code:
     =ERROR REPORT==== 2013-12-14 12:07:10 ===
    E(<0.276.0>:ejabberd_listener:512) : Failed to open socket:
      {5222,ejabberd_c2s,[inet,{ip,{0,0,0,0}}]}
    Reason: IP address and port number already used: 0.0.0.0 5222
    
    =INFO REPORT==== 2013-12-14 12:07:10 ===
    I(<0.40.0>:cyrsasl_digest:44) : FQDN used to check DIGEST-MD5 SASL authentication: "wysar"
    
    =ERROR REPORT==== 2013-12-14 12:07:10 ===
    C(<0.40.0>:gen_mod:75) : Problem starting the module mod_adhoc for host "brudell.dyndns.org"
     options: []
     exit: {noproc,
               {gen_server,call,
                   [ejabberd_iq_sup,
                    {start_child,["brudell.dyndns.org",mod_adhoc,process_local_iq]},
                    infinity]}}
    
    =ERROR REPORT==== 2013-12-14 12:07:10 ===
    C(<0.40.0>:gen_mod:80) : ejabberd initialization was aborted because a module start failed.
    
    =ERROR REPORT==== 2013-12-14 12:07:52 ===
    E(<0.255.0>:ejabberd_listener:512) : Failed to open socket:
      {5222,ejabberd_c2s,[inet,{ip,{0,0,0,0}}]}
    Reason: IP address and port number already used: 0.0.0.0 5222
    
    =INFO REPORT==== 2013-12-14 12:07:52 ===
    I(<0.40.0>:cyrsasl_digest:44) : FQDN used to check DIGEST-MD5 SASL authentication: "wasar"
    
    =ERROR REPORT==== 2013-12-14 12:07:52 ===
    C(<0.40.0>:gen_mod:75) : Problem starting the module mod_adhoc for host "brudell.dyndns.org"
     options: []
     exit: {noproc,
               {gen_server,call,
                   [ejabberd_iq_sup,
                    {start_child,["brudell.dyndns.org",mod_adhoc,process_local_iq]},
                    infinity]}}
    
    =ERROR REPORT==== 2013-12-14 12:07:52 ===
    C(<0.40.0>:gen_mod:80) : ejabberd initialization was aborted because a module start failed.
    Code:
    =CRASH REPORT==== 14-Dec-2013::12:07:52 ===
      crasher:
        initial call: supervisor:ejabberd_listener/1
        pid: <0.255.0>
        registered_name: ejabberd_listeners
        exception exit: {bad_return_value,{eaddrinuse,{5222,{0,0,0,0},tcp}}}
          in function  gen_server:init_it/6 (gen_server.erl, line 332)
        ancestors: [ejabberd_sup,<0.40.0>]
        messages: []
        links: [<0.219.0>]
        dictionary: []
        trap_exit: true
        status: running
        heap_size: 987
        stack_size: 24
        reductions: 614
      neighbours:
    
    =SUPERVISOR REPORT==== 14-Dec-2013::12:07:52 ===
         Supervisor: {local,ejabberd_sup}
         Context:    start_error
         Reason:     {bad_return_value,{eaddrinuse,{5222,{0,0,0,0},tcp}}}
         Offender:   [{pid,undefined},
                      {name,ejabberd_listener},
                      {mfargs,{ejabberd_listener,start_link,[]}},
                      {restart_type,permanent},
                      {shutdown,infinity},
                      {child_type,supervisor}]
    Ist die box geowned worden?
    bye Brudell
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 14.12.2013
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Du solltest mal mittels 'netstat' oder 'lsof -i' schauen welcher Prozess dort den Port 5222 benutzt. Die Meldungen 'eaddrinuse' und 'IP address and port number already used: 0.0.0.0 5222' sind ja recht eindeutig.
     
  4. #3 brudell, 15.12.2013
    Zuletzt bearbeitet: 15.12.2013
    brudell

    brudell Grünschnabel

    Dabei seit:
    14.12.2013
    Beiträge:
    3
    Zustimmungen:
    0
    Also ich habe das sofort getan. Jedoch zeigten beide nichts nennenswertes an:

    Code:
     ~ $ sudo netstat -anv
    Aktive Internetverbindungen (Server und stehende Verbindungen)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:6547            0.0.0.0:*               LISTEN
    tcp        0    448 77.65.239.173:6547      77.65.207.89:33172      VERBUNDEN
    udp        0      0 0.0.0.0:44834           0.0.0.0:*
    udp        0      0 0.0.0.0:68              0.0.0.0:*
    udp        0      0 77.65.239.173:123       0.0.0.0:*
    udp        0      0 127.0.0.1:123           0.0.0.0:*
    udp        0      0 0.0.0.0:123             0.0.0.0:*
    Die eine offenen Verbindung oben ist SSH.

    Code:
     ~ $ sudo lsof -iTCP -sTCP:LISTEN
    COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    epmd    1837 ejabberd    3u  IPv4   2433      0t0  TCP *:epmd (LISTEN)
    sshd    2579     root    3u  IPv4   3431      0t0  TCP *:6547 (LISTEN)
    Code:
     ~ $ sudo lsof -i
    COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    epmd     1837 ejabberd    3u  IPv4   2433      0t0  TCP *:epmd (LISTEN)
    ntpd     2402      ntp   16u  IPv4   2958      0t0  UDP *:ntp
    ntpd     2402      ntp   17u  IPv4   2962      0t0  UDP localhost:ntp
    ntpd     2402      ntp   19u  IPv4   3439      0t0  UDP 77-65-239-173.dynamic.pimacom.net:ntp
    dhclient 2534     root    8u  IPv4   2473      0t0  UDP *:bootpc
    dhclient 2534     root   20u  IPv4   2447      0t0  UDP *:44834
    sshd     2579     root    3u  IPv4   3431      0t0  TCP *:6547 (LISTEN)
    sshd     2643     root    3u  IPv4   3613      0t0  TCP 77-65-239-173.dynamic.pimacom.net:6547->77-65-207-89.dynamic.pimacom.net:33172 (ESTABLISHED)
    sshd     2722       pi    3u  IPv4   3613      0t0  TCP 77-65-239-173.dynamic.pimacom.net:6547->77-65-207-89.dynamic.pimacom.net:33172 (ESTABLISHED)
    Da ich nichts sehe, dachte ich die Box sei geowned worden. rkhunter, chkrootkit sagen jedoch nichts interessantes. Nur chkrootkit meinte eine Bindshell wäre aktiv. Dem ging ich via google nach und viele diskutierten in Foren über das "false positiv".

    Zudem habe ich an dem Server, der vorher 4 Wochen total stabil lief, außer dist-upgrades, nichts weiter verändert. Daher wunderte mich der Crash des ejabberd Servers.
     
  5. #4 brudell, 15.12.2013
    brudell

    brudell Grünschnabel

    Dabei seit:
    14.12.2013
    Beiträge:
    3
    Zustimmungen:
    0
    Aus den oberen logs hervorgehend, kann es ja kein Dienst auf dem Port 5222 sein. Ich suchte daher einmal weiter.

    Im erl_crash.dump File stand als "Slogan" folgendes:

    Code:
     Sun Dec 15 16:13:33 2013
    Slogan: Kernel pid terminated (application_controller) ({application_terminated,mnesia,killed})
    System version: Erlang R15B01 (erts-5.9.1) [source] [async-threads:0] [kernel-poll:false]
    Compiled: Wed Feb 13 05:21:13 2013
    Taints: crypto
    Atoms: 12179
    Ich googelte einmal den Slogan. Leider hatte niemand ein "passendes Problem" oder eine passende Lösung parat. Die Konfigurationen unterschieden sich sehr stark, weshalb mir deren Lösung so nicht half. Ich fand nur heraus, dass es wohl ein overload der mnesia Datenbank geben könnte. Komisch, ich habe auf meinem Server nur 4 User - daher unmöglich das es dieses Problem sein kann.

    Ich starte den Server sonst immer über
    Code:
    sudo /etc/init.d/ejabberd start
    und dabei enstanden die oben genannten Fehler.

    Nun startete ich den Server einmal per
    Code:
     sudo ejabberd -detached
    und siehe da er läuft.

    Nun kann es also auch das init-Skript sein, welches etwas "falsch macht". Ich habe es jedoch nicht verändert. Es wundert mich daher also, woher der Fehler stammt.

    Ich kann leider kein Bash; sieht jemand etwas verdächtiges?

    Code:
    #! /bin/sh
    #
    # ejabberd        Start/stop ejabberd server
    #
    
    ### BEGIN INIT INFO
    # Provides:          ejabberd
    # Required-Start:    $remote_fs $network $named $time
    # Required-Stop:     $remote_fs $network $named $time
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Starts ejabberd jabber server
    # Description:       Starts ejabberd jabber server, an XMPP
    #                    compliant server written in Erlang.
    ### END INIT INFO
    
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    EJABBERD=/usr/sbin/ejabberd
    EJABBERDCTL=/usr/sbin/ejabberdctl
    EJABBERDRUN=/var/run/ejabberd
    EJABBERDUSER=ejabberd
    NAME=ejabberd
    
    test -f $EJABBERD || exit 0
    test -f $EJABBERDCTL || exit 0
    
    # Include ejabberd defaults if available
    if [ -f /etc/default/ejabberd ] ; then
        . /etc/default/ejabberd
    fi
    
    ctl()
    {
        action="$1"
        su $EJABBERDUSER -c "$EJABBERDCTL $action" >/dev/null
    }
    
    mkrundir()
    {
        if [ ! -d $EJABBERDRUN ]; then
            mkdir -p $EJABBERDRUN
            if [ $? -ne 0 ]; then
                echo -n " failed"
                return
            fi
            chmod 0755 $EJABBERDRUN
            chown ejabberd:ejabberd $EJABBERDRUN
        fi
    }
    
    start()
    {
        mkrundir
    
        cd /var/lib/ejabberd
        su $EJABBERDUSER -c "$EJABBERD -noshell -detached"
    
        cnt=0
        while ! (ctl status || test $? = 1) ; do
            echo -n .
            cnt=`expr $cnt + 1`
            if [ $cnt -ge 60 ] ; then
                echo -n " failed"
                break
            fi
            sleep 1
        done
    }
    
    stop()
    {
        if ctl stop ; then
            cnt=0
            sleep 1
            while ctl status || test $? = 1 ; do
                echo -n .
                cnt=`expr $cnt + 1`
                if [ $cnt -ge 60 ] ; then
                    echo -n " failed"
                    break
                fi
                sleep 1
            done
        else
            echo -n " failed"
        fi
    }
    
    live()
    {
        mkrundir
    
        echo '*******************************************************'
        echo '* To quit, press Ctrl-g then enter q and press Return *'
        echo '*******************************************************'
        echo
    
        cd /var/lib/ejabberd
        exec su $EJABBERDUSER -c "$EJABBERD"
    }
    
    case "$1" in
        start)
            echo -n "Starting jabber server: $NAME"
            if ctl status ; then
                echo -n " already running"
            else
                start
            fi
        ;;
        stop)
            echo -n "Stopping jabber server: $NAME"
            if ctl status ; then
                stop
            else
                echo -n " already stopped"
            fi
        ;;
        restart|force-reload)
            echo -n "Restarting jabber server: $NAME"
            if ctl status ; then
                stop
                start
            else
                echo -n " is not running. Starting $NAME"
                start
            fi
        ;;
        live)
            if ctl status ; then
                echo -n "ejabberd is already running"
            else
                live
            fi
        ;;
        *)
            echo "Usage: $0 {start|stop|restart|force-reload|live}" >&2
            exit 1
        ;;
    esac
    
    if [ $? -eq 0 ]; then
        echo .
    else
        echo " failed."
    fi
    
    exit 0
    Mein letzter Gedanke wäre sonst noch, dass der User "ejabberd" irgendwie andere Rechte / Gruppen zugeteilt bekommen hat. Auch hier habe ich aktiv nichts geändert. Wäre dies auch eine mögliche Ursache?
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

ejabberd Server neuerdings instabil

Die Seite wird geladen...

ejabberd Server neuerdings instabil - Ähnliche Themen

  1. ejabberd: automatische Kontaktliste

    ejabberd: automatische Kontaktliste: Hallo, habe hier ein Ubuntu mit ejabberd 2.0.1-2 laufen. Funktioniert soweit auch schon ganz gut. Nun habe ich vor circa 20 User anzulegen....
  2. ejabberd mit pyicqt und pymsnt

    ejabberd mit pyicqt und pymsnt: Hi, gestern habe ich mir wieder mein jabber server installiert. dieser funktioniert auch einwandfrei. jid: jabber.sub.example.de msn:...
  3. PyICQt ejabberd ICQ Transport

    PyICQt ejabberd ICQ Transport: Hallo allerseits, Ich habe neulich von Debian Etch auf Lenny geupgradet. Seit dem startet PyICQt nicht mehr. Wenn ich es starten will quittiert...
  4. ejabberd auf Arch > kein regestrieren möglich

    ejabberd auf Arch > kein regestrieren möglich: Hey. Aus lern zwecken wollte ich mir einfach mal ein jabber server einrichten. Nach ein wenig Googeln hab ich z.b erfahren das ejabberd...
  5. CentOS 7: Falsche Metric bei regelbasiertem Routing nach Server-Reboot

    CentOS 7: Falsche Metric bei regelbasiertem Routing nach Server-Reboot: Hallo zusammen Ich möchte unseren existierenden SFTP Server durch einen neuen Server mit CentOS 7 ersetzen. Da der Server einerseits direkt via...