Home Forum Allgemeines Allgemeines zu Nuclos Frage zum Multicore-Support

Ansicht von 7 Beiträgen - 1 bis 7 (von insgesamt 7)
  • Autor
    Beiträge
  • #7914
    Thorsten Kreutz
    Teilnehmer

    Hallo zusammen,

    ich habe da mal eine technische Frage zum Multicore-Support. Hintergrund ist, dass wir die produktive Nuclos-Instanz immer noch mit Java 6 betreiben (müssen), da einzelne Clients mit einem alten MacOS darauf zugreifen, für die es noch kein Java 7 gibt.

    Es laufen teilweise komplexere Jobs, die wir für die Datenbereinigung im Zuge einer Migration durchführen. Dabei fällt auf, dass auf dem Server (1 Prozessor, 4 Kerne) ein Kern mit 100% ausgelastet ist, während die anderen 3 sich langweilen. Ein Blick ins Web sagt, dass der Multicore-Support mit Java 7 stark verbessert wurde, dass es im Wesentlichen jedoch von der Implementierung abhängt.

    Also wollte ich mal testen, wie es sich damit verhält, und habe auf einer virtuellen Maschine, die eine exakte Kopie des Servers bereitstellt, den Test gemacht. Tatsächlich scheint der Server die Lasten besser zu verteilen, jedoch auch unter Java 6 – und damit stellt sich die Frage, ob das mit Java, der Virtualisierung oder der Hardware zusammenhängt.

    Da ich nicht einfach den Produktivserver auf Java 7 umstellen möchte, ist meine Frage daher, ob der Multicore-Support in Nuclos berücksichtigt ist und ob das (so meine Hoffnung) mit dem Einsatz von Java 7 auch noch verbessert wurde?

    Vielen Dank und beste Grüße

    #7929
    Thorsten Kreutz
    Teilnehmer

    Habe selbst noch ein wenig weitergeforscht und herausgefunden, dass das Problem wohl eher die Postgres-Datenbank ist. Diese spawned pro Verbindung einen Prozess und lastet mit diesem dann bis zu 100% eines Kerns aus.

    Demnach ist die Umstellung auf Java 7 nicht das Allheilmittel unserer Performance-Engpässe.

    Beste Grüße,
    kreutho

    #7930
    Frank Pavlic
    Teilnehmer

    Hallo kreutho,
    falls Du Fragen oder Ideen benötigst, um den Grund der 100%-CPU-Auslastung zu finden, ich bin bereit 👿 . In der Regel sind es meistens schlechte SQL-Anweisungen, welche die CPU einfach belasten. Da würde ich ansetzen, also
    Protokollierung in postgres einschalten und los geht’s .

    Gruß
    Frank

    #7932
    Thomas Hempel
    Teilnehmer

    Hallo,

    kleine Zwischenfrage an die Spezialisten: Verhält sich MS SQL-Server in dieser Hinsicht besser? Ich habe gerade einen Server mit 8 Kernen bestellt. Die möchte ich für nuclos nutzen können. Das spricht natürlich nicht gegen SQL-Optimierungen. (Wenn wir nur schon soweit wären..)

    Die Frage ist: Unter welchen Bedingungen kann nuclos eine Mehrkernmaschine nutzen?

    Gruß
    Thomas

    #7935
    Thomas Hempel
    Teilnehmer

    Hallo,

    nach kurzer Recherche habe ich das selbst beantwortet. Im SQL-Server 2005 kann man die Anzahl der nutzbaren Threads mit

    max worker threads

    einstellen. Eine standardeinstellung wird beim Start und

    max worker threads = 0

    automatisch errechnet.

    Jetzt würde mich nur noch interessieren, ob PostgreSQL das tatsächlich nicht kann?

    Gruß
    Thomas

    #7936
    Frank Pavlic
    Teilnehmer

    Hallo Thomas,
    die Antwort ist ja, man kann auch in postgresql per max_connections die maximale Anzahl an gleichzeitigen Verbindungen konfigurieren. Allerdings gibt es weitere Parameter, die bei Änderung des max_connections ebenfalls
    angepasst werden müssen, sonst kann es passieren, dass der
    Hauptspeicher aufgefressen wird.
    Diesbezüglich findest Du unter
    https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
    mehr Informationen. Da wirst Du auch weitere Links zum Thema Connection Pooling in postgresql finden.

    Gruß
    Frank

    #7958
    Thorsten Kreutz
    Teilnehmer

    Hallo ihr beiden und vielen Dank für die Diskussion – hatte schon gar nicht mehr damit gerechnet 😉

    In der Tat bin ich jetzt auch erst mal beim Optimieren der Datenbank gelandet und werte das jetzt in der nächsten Zeit aus.

    Aber eine Frage schon mal vorab: die max_connections bei Postgres zielen auf die gleichzeitigen Verbindungen ab. Die Frage ist ja, wie wird das bei Nuclos gelöst. Ich gehe jedenfalls mal davon aus, dass nicht jeder Client eine Verbindung zum Datenbank-Server öffnet – sondern vielmehr eine Art Pooling im Rahmen des Nuclos-Servers stattfindet. Wie viele gleichzeitige Verbindungen werden denn da so angelegt?

    Danke & Gruß,
    kreutho

Ansicht von 7 Beiträgen - 1 bis 7 (von insgesamt 7)