AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Systemauslastung. Max an Threads und max Zugriffe auf DB
Thema durchsuchen
Ansicht
Themen-Optionen

Systemauslastung. Max an Threads und max Zugriffe auf DB

Ein Thema von Jackie1983 · begonnen am 10. Mär 2010 · letzter Beitrag vom 10. Mär 2010
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Systemauslastung. Max an Threads und max Zugriffe auf DB

  Alt 10. Mär 2010, 16:37
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

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
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#2

Re: Systemauslastung. Max an Threads und max Zugriffe auf DB

  Alt 10. Mär 2010, 16:47
Zitat von Jackie1983:
Gibt es irgend eine Begrenzung für die Anzahl der Threads die man nicht überschreiten sollte?
Hallo Jackie1983, Ja es gibt eine Faustformel, die besagt Maximal 8 Threads pro Core,
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
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#3

Re: Systemauslastung. Max an Threads und max Zugriffe auf DB

  Alt 10. Mär 2010, 16:54
Zitat von Astat:
Viele Threads mit wenig Auslastung = Processor Queue Length <= 1 = OK!
Wenige Threads mit viel Auslastung = Processor Queue Length > 1 = Böse!
Hi Astat, wie könnte ich den die Auslastung der Threads messen? Weis ja nicht
was da gemacht wird und wie die Auslastung ist.

Mfg
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: Systemauslastung. Max an Threads und max Zugriffe auf DB

  Alt 10. Mär 2010, 17:01
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.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#5

Re: Systemauslastung. Max an Threads und max Zugriffe auf DB

  Alt 10. Mär 2010, 17:11
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
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#6

Re: Systemauslastung. Max an Threads und max Zugriffe auf DB

  Alt 10. Mär 2010, 17:32
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz