1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Datenbank Performance nach Serverwechsel

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von heilendes_Haendchen, 31 Oktober 2018.

  1. heilendes_Haendchen

    heilendes_Haendchen Neuer Benutzer

    Guten Tag,

    wir planen einen Hardwarewechsel unseres Produktivsystems. Die Datenbankperformance auf der neuen Hardware ist aber schlechter als die Performance auf dem aktuellen System, obwohl die Hardware deutlich besser ist.
    Ich habe schon an verschiedenen Einstellungen geschraubt, bisher aber ohne nennenswerten Erfolg. Ich hoffe hier kann mir jemand einen Tip geben, wie ich diesem Performanceproblem beikommen kann.

    Hier ein paar Daten zu den Systemen:
    Hier nochmal die wichtigsten Einstellungen aus der my.cnf (alter Server) bzw der 50-server.cnf (neuer Server). Die Werte habe ich auf dem neuen Server auf die Werte unserer aktuellen Produktivumgebung gesetzt:
    Code:
    key_buffer_size         = 512M
    max_allowed_packet      = 128M
    thread_stack            = 192K
    thread_cache_size       = 32
    myisam_recover_options  = BACKUP
    max_connections         = 500
    table_definition_cache  = 2048
    table_cache             = 64M
    tmp_table_size          = 256M
    max_heap_table_size     = 256M
    query_cache_limit       = 16M
    query_cache_size        = 64M
    log_error = /var/log/mysql/error.log
    slow_query_log          = 1
    slow_query_log_file     = /var/log/mysql/mariadb-slow.log
    long_query_time = 10
    innodb_buffer_pool_size         = 2G
    innodb_buffer_pool_instances    = 32
    

    Ich habe mit Sysbench auf beiden Servern einen Benchmarktest der Datenbank durchgeführt. dabei ist zu beachten, dass auf dem aktuellen Produktivsystem zum Zeitpunkt des Tests natürlich durch unsere Webapplikationen Last auf der Datenbank war, während auf dem neuen System nur ich als Benutzer angemeldet war, also keine weiteren Datenbankabfragen durchgeführt wurden, die die Testergebnisse beinflussen könnten. Hier die Ergebnisse:

    Aktueller Produktivserver:
    Code:
    root@web:~$ sysbench --test=oltp --oltp-table-size=100000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=password --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
    sysbench 0.4.12:  multi-threaded system evaluation benchmark
    
    Running the test with following options:
    Number of threads: 8
    
    Doing OLTP test.
    Running mixed OLTP test
    Doing read-only test
    Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.
    
    OLTP test statistics:
        queries performed:
            read:                            1468628
            write:                           0
            other:                           209804
            total:                           1678432
        transactions:                        104902 (1748.28 per sec.)
        deadlocks:                           0      (0.00 per sec.)
        read/write requests:                 1468628 (24475.99 per sec.)
        other operations:                    209804 (3496.57 per sec.)
    
    Test execution summary:
        total time:                          60.0028s
        total number of events:              104902
        total time taken by event execution: 479.4125
        per-request statistics:
             min:                                  0.43ms
             avg:                                  4.57ms
             max:                                140.91ms
             approx.  95 percentile:               8.91ms
    
    Threads fairness:
        events (avg/stddev):           13112.7500/107.29
        execution time (avg/stddev):   59.9266/0.00
    
    Neuer Server:
    Code:
    root@web1:~$ sysbench --test=oltp --oltp-table-size=100000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=password --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
    sysbench 0.4.12:  multi-threaded system evaluation benchmark
    
    Running the test with following options:
    Number of threads: 8
    
    Doing OLTP test.
    Running mixed OLTP test
    Doing read-only test
    Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
    Using "BEGIN" for starting transactions
    Using auto_inc on the id column
    Threads started!
    Time limit exceeded, exiting...
    (last message repeated 7 times)
    Done.
    
    OLTP test statistics:
        queries performed:
            read:                            1422848
            write:                           0
            other:                           203264
            total:                           1626112
        transactions:                        101632 (1693.77 per sec.)
        deadlocks:                           0      (0.00 per sec.)
        read/write requests:                 1422848 (23712.77 per sec.)
        other operations:                    203264 (3387.54 per sec.)
    
    Test execution summary:
        total time:                          60.0035s
        total number of events:              101632
        total time taken by event execution: 479.2527
        per-request statistics:
             min:                                  1.07ms
             avg:                                  4.72ms
             max:                                 22.90ms
             approx.  95 percentile:               7.39ms
    
    Threads fairness:
        events (avg/stddev):           12704.0000/47.75
        execution time (avg/stddev):   59.9066/0.00
    
    Nach meinem Verständnis müssten die Werte auf dem neuen Server deutlich besser sein. Ich hoffe hier kann mir jemand einen Hinweis geben wie ich das Problem finden kann.

    Vielen Dank für eure Bemühungen!
     
  2. Walter

    Walter Administrator Mitarbeiter

    Ihr arbeitet nur mit Innodb und nicht auch mit Myisam?
    Ist das ein reiner Datenbankserver oder laufen darauf auch noch andere Dienste wie Webserver etc?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    ich tippe mal auf gammelige Platten...
     
  4. heilendes_Haendchen

    heilendes_Haendchen Neuer Benutzer

    Auf dem aktuellen Server läuft auch noch ein apache Webserver sowie ein postfix Mailserver. Auf dem neuen Server soll dann parallel nur noch der apache Webserver laufen.
    Wir haben zur Zeit noch eine wilde Mischung aus InnoDB und MyISAM, die Performance Tests wurden mit InnoDB durchgeführt und die noch vorhandenen MyISAM Tabellen sollen nach und nach auch auf InnoDB umgestellt werden.

    Ich habe mal Lese- Schreibtests der Platten durchgeführt. Nach den Ergebnissen dieser Tests kann man das leider auch als Ursache ausschließen.

    Hier die Testergebnisse:
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden