![]() |
Systemauslastung. Max an Threads und max Zugriffe auf DB
Servus,
in meiner Anwendung wird für jede Aufgabe ein Thread gestartet. Gerade hatte ich 105 Aufgaben und da ist das System komplett zusammen gebrochen :wink: Gibt es irgend eine Begrenzung für die Anzahl der Threads die man nicht überschreiten sollte? Jeder Aufgabenthread hat eine lokale Datenbank anbindung. Könnte es da auch zu Engpässen führen? Verwende Xampp. mfg |
Re: Systemauslastung. Max an Threads und max Zugriffe auf DB
Zitat:
wenn die Threads voll ausgelastet sind, und die Processor Queue Length nie über 1 ist. D.h. Viele Threads mit wenig Auslastung = Processor Queue Length <= 1 = OK! Wenige Threads mit viel Auslastung = Processor Queue Length > 1 = Böse! lg. Astat |
Re: Systemauslastung. Max an Threads und max Zugriffe auf DB
Zitat:
was da gemacht wird und wie die Auslastung ist. Mfg |
Re: Systemauslastung. Max an Threads und max Zugriffe auf DB
Ich weiß zwar nicht was das für Aufgaben sind, aber im Normalfall ist ein Worker Thread Pool und eine Aufgabenliste intelligenter.
Also im Prinzip eine Liste von Aufgaben und dann erstellst du 2 (4 oder 8 (je nach aufgabenart)) x (Anzahl CPU Cores) Threads die sich eine Aufgabe aus der Liste nehmen und diese dann abarbeiten. Anderer Vorteil: Du musst nicht dauernd Threads erzeugen und freigeben und hast eine fixe Anzahl an Datenbank Verbindungen. Wenn du es nicht so lösen willst dann schau mal ob die Datenbank ein Userlimit eingestellt hat. |
Re: Systemauslastung. Max an Threads und max Zugriffe auf DB
Hallo Jackie1983,
Remote mit Perfmon und "Processor Queue Length", Ram und CPU Auslastung, Threads, File-IO, Netzwerk etc. monitoren. Zuallererst, würde ich die Maximalanzahl der Threads in Deiner Applikation auf ein erträgliches Maß heruntersetzen. D.h. nicht bei jedem Zugriff einen Thread erzeugen (vermute hier einfach mal ein Client Server System), sondern Workerthreads mit Input-Queue verwenden. EDIT: gsh hat es treffender formuliert! Anzahl der CPU-Cores * 8 = Anzahl der Workerthreads. lg. Astat |
Re: Systemauslastung. Max an Threads und max Zugriffe auf DB
Ok. Die Aufgaben stehen in einer Datenbank und werden im x Minuten takt wiederholt.
Andere Aufgaben nur einmalig und wiederum andere Aufgaben nur bei Usereingaben. Zu erst hatte ich es so das es einen Jobthread gibt, der hat alles nacheinander abgearbeitet. Problem, wenn ein Job zu lange braucht, kommen die anderen erst viel später dran. Also habe ich einen Hauptthread. Der kontrolliert die Db und liest alle jobs aus die abgearbeitet werden müssen und erstellt für jeden Job ein Thread. Jetzt habe ich eine Threadbegrenzung eingebaut. Einfach ein counter der zählt wie viele Threads es gibt. Wird x erreicht werden keine Threads mehr erstellt bis die alten beendet wurden. Weil wenn ich doch wieder einen Jobthread erstelle und dort alle Jobs eintrage, sammelt sich doch die Jobliste wieder. //Edit Eventuel noch hilfreich, damit man weis was die Jobs sind. Mit dem Programm werden unsere Server überwacht. Ein mini System was aber schnell arbeiten soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz