Neu Worker überwachung?

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.215
188
Der Worker startet 3 unterschiedliche Prozesse und wenn diese gerade Daten in die Datenbank schreiben und plötzlich beendet werden - dann kann es zum Datenverlust führen.
Genau dafür gibt es doch Signale. Du musst den Prozess ja nicht gleich abschießen, ein SIGINT sollte erstmal reichen. Wenn der oder die Prozesse darauf in einer gewissen Zeit nicht reagieren, dann kannst Du sie auch mit SIGKILL beenden, denn dann machen die eh nichts mehr.
 

thowi

Sehr aktives Mitglied
8. Juni 2018
426
66
Ich würde gerne die Prüfung auf den Shopabgleich komplett rausnehmen, weil kein Shop vorhanden und so führt's immer zu einem Fehler, weil eben kein Shopabgleich erfolgt.

Dazu hab ich nun unten die SQL-Abfrage folgendermaßen abgeändert:

Bash:
SqlCmd -U "%USER%" -P "%PASSWD%"  -S "%INSTANCE%" -h-1 -W -Q "SET NoCount ON; SELECT %concatEbay% %concatAmazon% from  %DATABASE%.%TABLENAME% where  %whereMaxMinEbay:"=% %whereMaxMinAmazon:"=% " > "%DBList%"

Also einfach den Shop rausgehauen. Leider klappt das nicht, ich bekomme dann folgende Fehlermeldung per Mail zugeschickt:
Meldung "156", Ebene "15", Status "1", Server "WIN-3HREAPNSEKR\JTLWAWI", Zeile 1 "Falsche Syntax in der N„he des OR-Schlsselworts."

Oben die Setter sollten ja eigentlich egal sein? Jemand eine Idee, wie ich korrekterweise den Shop komplett ausklammern kann?
Danke euch!
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Ich würde gerne die Prüfung auf den Shopabgleich komplett rausnehmen, weil kein Shop vorhanden und so führt's immer zu einem Fehler, weil eben kein Shopabgleich erfolgt.

Dazu hab ich nun unten die SQL-Abfrage folgendermaßen abgeändert:

Bash:
SqlCmd -U "%USER%" -P "%PASSWD%"  -S "%INSTANCE%" -h-1 -W -Q "SET NoCount ON; SELECT %concatEbay% %concatAmazon% from  %DATABASE%.%TABLENAME% where  %whereMaxMinEbay:"=% %whereMaxMinAmazon:"=% " > "%DBList%"

Also einfach den Shop rausgehauen. Leider klappt das nicht, ich bekomme dann folgende Fehlermeldung per Mail zugeschickt:
Meldung "156", Ebene "15", Status "1", Server "WIN-3HREAPNSEKR\JTLWAWI", Zeile 1 "Falsche Syntax in der N„he des OR-Schlsselworts."

Oben die Setter sollten ja eigentlich egal sein? Jemand eine Idee, wie ich korrekterweise den Shop komplett ausklammern kann?
Danke euch!
Immer richtig lesen :)

:: xx ist die Anzahl an Minuten, ich würde hier eine 30 oder eher 60 setzen da es ja mal sein kann das der Worker mehr zu tun hat Plattformen die nicht bedient werden stehen dann auf "0"
set maxMinsShop=90
set maxMinsEbay=90
set maxMinsAmazon=90
 
  • Gefällt mir
Reaktionen: thowi

thowi

Sehr aktives Mitglied
8. Juni 2018
426
66
Ich dachte eigentlich mit dem Setting läuft es jetzt gut.... scheinbar ist aber irgendwo noch der Wurm drin. Gerade hat das Tool eine Mail geschickt mit folgendem Inhalt:

Bildschirmfoto 2019-03-06 um 15.30.40.jpg

Ich hab direkt mal auf der Datenbank geschaut, da sieht der Worker gut aus:
Bildschirmfoto 2019-03-06 um 15.30.44.jpg

Das sind meine Einstellungen aus dem Tool:
Bildschirmfoto 2019-03-06 um 15.31.56.jpg

Warum kam die obige Mail? Sieht doch eigentlich alles gut aus?
 

djharms

Gut bekanntes Mitglied
28. Februar 2019
109
19
Uelzen
Moin!

Der Worker scheint auch ohne email-Warnung hin und wieder zu hängen,
zumindest ist das bei uns aktuell seit 2 Tagen so, dass ich den Worker von
Hand anwerfen muss, da die Daten leider nicht automatisiert abgeglichen
wurden...

Ahoi!
DIetmar
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Ich dachte eigentlich mit dem Setting läuft es jetzt gut.... scheinbar ist aber irgendwo noch der Wurm drin. Gerade hat das Tool eine Mail geschickt mit folgendem Inhalt:

Den Anhang 31952 betrachten

Ich hab direkt mal auf der Datenbank geschaut, da sieht der Worker gut aus:
Den Anhang 31953 betrachten

Das sind meine Einstellungen aus dem Tool:
Den Anhang 31954 betrachten

Warum kam die obige Mail? Sieht doch eigentlich alles gut aus?
Hattest du in dem Script diese Änderung vorgenommen?

https://forum.jtl-software.de/threads/worker-ueberwachung.94039/page-4#post-640629
 
  • Gefällt mir
Reaktionen: thowi

thowi

Sehr aktives Mitglied
8. Juni 2018
426
66
Nee, ich hatte es so genommen wie von deiner Seite. Danke für den Hinweis, hab ich geändert und warte dann mal ab :D top!
 

JohnFrea

Sehr aktives Mitglied
21. September 2017
812
253
Hier mal meine Lösung zu dem Thema.

Nachfolgende .bat Datei wird per Windows Aufgabenplanung alls 2 Stunden ausgeführt.

Es wird geprüft, ob ein Worker läuft.
Wenn ja, bekommt er einen sanften Taskkill, um korrekt beendet zu werden und eine Karenzzeit.
Danach wird er hart per Taskkill beendet und nach einer Karenzzeit neu gestartet.

Das funktiniert bei uns seit Jahren problemlos. Datenbankprofil, User, Passwort, Mandant dürfen keine Leerzeichen enthalten.

Code:
@ECHO OFF

color cf
mode con lines=13 cols=70
set var wkilled=0
set var softendtried=0


:StartSkript
    cls
    ECHO. Skript startet und beendet alten Worker...
    timeout /t 5


:Check-Worker
    tasklist /FI "IMAGENAME eq JTL-Wawi.exe" 2>NUL | find /I /N "JTL-Wawi.exe">NUL
    if "%ERRORLEVEL%"=="0" goto End-Worker-Soft
    goto Start-Worker
    
    
:End-Worker-Soft:
    If "%softendtried%" == "1" goto Kill-Worker
    Cls
    Echo. Alter Worker gefunden...beende soft...
    timeout /t 3
    taskkill.exe /IM JTL-Wawi.exe
    Echo. Worker Zeit zum beenden lassen...
    Timeout /t 300
    set softendtried=1
    goto StartSkript
    
    
:Kill-Worker
    cls
    ECHO. Alter Worker schließt nicht...hart beenden
    timeout /t 5
    taskkill.exe /IM JTL-Wawi.exe /F
    set wkilled=1
    goto StartSkript


:Start-Worker
    cls
    ECHO. Kein alter mehr Worker gefunden...Starte neuen Worker nach Karenzzeit...
    IF "%wkilled%" == "1" (
        timeout /t 240
    )
    START "" /D "C:\Program Files (x86)\JTL-Software\" "C:\Program Files (x86)\JTL-Software\JTL-wawi.exe" WORKER DeinDatenbankProfil DeinWawiUser DeinWawiUserPasswort DeinMandant 0


EXIT
 

itbrockmann

Mitglied
10. Oktober 2019
18
6
Schaumburg
Ja, musste alles in den settings oben von <> auf "" geändert werden (und reicht sogar, nur die WaWI Instanz anzugeben, ohne host/ip/port) jedoch krieg ich jetzt:


Code:
Sqlcmd: 'eazybusiness".dbo.tWorkerInfo where  ((DATEDIFF(minute,dShopStart,getdate()) > 1 OR dShopEnde IS NULL) AND 1 > 0)    OR ((DATEDIFF(minute,dEbayStart,getdate()) > 1  OR dEbayEnde IS NULL)   AND 1 > 0 )   OR ((DATEDIFF(minute,dAmazonStart,getdate()) > 1  OR dAmazonEnde IS NULL)  AND 1 > 0 ) " ': Unerwartetes Argument. Geben Sie '-?' ein, um die Hilfe anzuzeigen.
fertig

Ja, ich hab zum Test absichtlich auf 1 Min. gestellt und einen Abgleich abgedreht.

Die LastStart.txt hat er mir erstellt, updated sie auch, jedoch ohne Inhalt.

Leider bei uns der selbe Fehler... hattet ihr damals das Problem dafür gefunden?
 

itbrockmann

Mitglied
10. Oktober 2019
18
6
Schaumburg
Wir haben das Problem nun selbst gefunden... für alle die ähnliche Probleme haben - hier die Lösung:

Bei uns durften weder <> noch "" in den Settings oben stehen. Komplett ohne funktioniert es nun bei uns fehlerfrei. Übrigens ebenfalls in Kombination mit GMail und Swithmail.
 
  • Gefällt mir
Reaktionen: Rico Giesler

Verkäufer-Performance

Aktives Mitglied
18. November 2013
24
1
Hallo,

gibt es inzwischen eine Lösung zur Worker-Überwachung, die in die Wawi eingebaut ist, oder muß man sich nach wie vor mit dem Script oben behelfen?

Danke für eine kurze Rückmeldung.
 

John

Sehr aktives Mitglied
3. März 2012
3.101
684
Berlin
Von JTL gibts noch nichts Neues. Es bleibt bei den Skripten oder einem kostenpflichtigen Tool...ich glaube es ist von CiN
 

JohnFrea

Sehr aktives Mitglied
21. September 2017
812
253

Zu diesem Tool gab es ja gerstern ein JTL Webinar, welches ich mit gemacht habe.

Wenn ein Servicepartner und JTL zum Webinar für ein neues Tool laden, erwarte ich schon fliegende Kühe. Gezeigt wurde ein Tool, welches
- lediglich lokal auf dem gleichen Rechner wie der Worker prüfen kann, ob der Woker als Prozess existiert
- existiert der Prozess nicht, den Worker neu zu starten versucht und eine eMail sendet
- über den Autostart Ordner eines Windows Benutzers selbst gestartet werden kann

Laut Präsentation explizit NICHT möglich sind:
- Überwachung des Workers von einem anderen Rechner aus
- Überwachung, ob der Worker noch läuft aber intern festhängt
- Überwachen, ob nur ein Unterprozess des Workers festhängt und so nur ein Teilbereich ( Shop, eBay oder Amazon) nicht mehr funktioniert
- Das Problem lösen, daß ein ungeplanter Server Neustart keinen angemeldeten Benutzer hat, in dessen Kontext der Worker gestartet werden kann
- Das Problem lösen, daß ein ungeplanter Server Neustart keinen angemeldeten Benutzer hat und damit die Worker-Überwachung lokal gar nicht starten kann

Im Wesentlichen ist das Tool damit eine GUI um den Befehl TaskList und eine Reaktion darauf durch Starten und eMail versenden.

Ich weiß nicht, welche Probleme die Kunden von walkenewmedia mit Ihrem Worker im Alltag haben. Meine Probleme und die, die hier im Forum beschrieben werden, sind auf jeden Fall andere. Das gezeigte Tool bleibt leider hinter meinen Erwartungen zurück und ist bereits vom Ansatz deutlich weniger geeignet als die Möglichkeiten, die wir hier in diesem Thread aufgezeigt haben.

Schade.
 

mhu

Gut bekanntes Mitglied
19. Mai 2020
118
16
Hier mal meine Lösung zu dem Thema.

Nachfolgende .bat Datei wird per Windows Aufgabenplanung alls 2 Stunden ausgeführt.

Es wird geprüft, ob ein Worker läuft.
Wenn ja, bekommt er einen sanften Taskkill, um korrekt beendet zu werden und eine Karenzzeit.
Danach wird er hart per Taskkill beendet und nach einer Karenzzeit neu gestartet.

Das funktiniert bei uns seit Jahren problemlos. Datenbankprofil, User, Passwort, Mandant dürfen keine Leerzeichen enthalten.

Code:
@ECHO OFF

color cf
mode con lines=13 cols=70
set var wkilled=0
set var softendtried=0


:StartSkript
    cls
    ECHO. Skript startet und beendet alten Worker...
    timeout /t 5


:Check-Worker
    tasklist /FI "IMAGENAME eq JTL-Wawi.exe" 2>NUL | find /I /N "JTL-Wawi.exe">NUL
    if "%ERRORLEVEL%"=="0" goto End-Worker-Soft
    goto Start-Worker
  
  
:End-Worker-Soft:
    If "%softendtried%" == "1" goto Kill-Worker
    Cls
    Echo. Alter Worker gefunden...beende soft...
    timeout /t 3
    taskkill.exe /IM JTL-Wawi.exe
    Echo. Worker Zeit zum beenden lassen...
    Timeout /t 300
    set softendtried=1
    goto StartSkript
  
  
:Kill-Worker
    cls
    ECHO. Alter Worker schließt nicht...hart beenden
    timeout /t 5
    taskkill.exe /IM JTL-Wawi.exe /F
    set wkilled=1
    goto StartSkript


:Start-Worker
    cls
    ECHO. Kein alter mehr Worker gefunden...Starte neuen Worker nach Karenzzeit...
    IF "%wkilled%" == "1" (
        timeout /t 240
    )
    START "" /D "C:\Program Files (x86)\JTL-Software\" "C:\Program Files (x86)\JTL-Software\JTL-wawi.exe" WORKER DeinDatenbankProfil DeinWawiUser DeinWawiUserPasswort DeinMandant 0


EXIT

Hänge mich da mal dran mit meinem Problem. Der Worker hängt sich nach einiger Zeit ohne Vorwarnung auf, die Daten aus dem Shop werden nicht übertragen. Ein Neustart und alles ist wieder gut.

Nun wollte ich dem mittels obigem Script entgegenwirken. Batch Datei erstellen hat einwandfrei funktioniert, automatisch starten auch kein Problem. ABER. Wenn der Worker neu gestartet wird, fliege ich auch aus der WAWI raus - in der darf ich mich dann manuell wieder einloggen. Ich gehe mal davon aus, dass das so nicht gewünscht ist.

Ausgangsituation ist:
WAWI läuft
Worker läuft (bis zu einem gewissen Punkt)
Worker wird per Batch neu gestartet
WAWI wird geschlossen
Worker läuft wieder
WAWI muss manuell neu gestartet werden

Also ein Problem beseitigt, ein anderes aufgemacht :)

Nur zum Verständnis wie der Ablauf sein sollte:
1) Worker starten
2) WAWI starten
(Oder doch umgekehrt?)

Aber selbst wenn ich das so mache und rechts in der Statusleiste das Icon vom Worker sehe, zeigt mir das Dashboard in der WAWI den Worker als inaktiv an, bzw. der Shopabgleich ist deaktiviert.

Irgendwo hats da den Wurm drinnen... Idee, wie ich das Problem in den Griff bekommen könnte?

Danke schonmal im Voraus!
 
Zuletzt bearbeitet:

John

Sehr aktives Mitglied
3. März 2012
3.101
684
Berlin
@mhu Doch, das Verhalten ist so korrekt. Das Skript beenden auch eine normale Wawi.

Den Worker als eigenes Programm gibt es gar nicht. Der Worker ist tatsächlich die Wawi, nur in einem besonderen Modus gestartet. Daher kann das Skript auch nicht unterscheiden, ob in der taskliste ein Worker oder eine Wawi läuft und macht beides zu.

Für mich spielt dieser Umstand keine Rolle, weil der Worker bei uns sowieso auf einem Rechner läuft, auf dem sonst niemand mit der Wawi arbeitet.

Theoretisch wäre es möglich, diesen Nebeneffekt zu vermeiden. Das geht aber nicht mehr per Skript sondern dann müßte ein eigenes, kleines Programm her, welches sich die Prozess-ID des gestarteten Worker merkt und nur danach sucht.
 

mhu

Gut bekanntes Mitglied
19. Mai 2020
118
16
@mhu Doch, das Verhalten ist so korrekt. Das Skript beenden auch eine normale Wawi.

Den Worker als eigenes Programm gibt es gar nicht. Der Worker ist tatsächlich die Wawi, nur in einem besonderen Modus gestartet. Daher kann das Skript auch nicht unterscheiden, ob in der taskliste ein Worker oder eine Wawi läuft und macht beides zu.

Für mich spielt dieser Umstand keine Rolle, weil der Worker bei uns sowieso auf einem Rechner läuft, auf dem sonst niemand mit der Wawi arbeitet.

Theoretisch wäre es möglich, diesen Nebeneffekt zu vermeiden. Das geht aber nicht mehr per Skript sondern dann müßte ein eigenes, kleines Programm her, welches sich die Prozess-ID des gestarteten Worker merkt und nur danach sucht.

Aha verstehe... Dachte bislang immer, das sind zwei unterschiedliche Applikationen.

Folglich schließe ich daraus, dass
1. die WAWI durch das Script gestartet werden SOLLTE es aber nicht tut weil
2. die Anmeldedaten nicht stimmen, richtig?

Das sind die Daten, die ich eingetragen habe:

Beispiel: DeinDatenbankProfil DeinWawiUser DeinWawiUserPasswort DeinMandant 0
Meine Daten: Standard meinBenutzername meinPasswort eB-Standard 0

Sollte das nicht stimmen... woher bekomme ich die Infos zu DatenbankProfil und Mandant?