Datenbank Performance nach Serverwechsel

heilendes_Haendchen

Neuer Benutzer
Beiträge
2
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:
Aktueller Produktivserver schrieb:
Quad-Core AMD Opteron(tm) Processor 1385 @ 1.50 GHz
16 GB RAM
DB-Server: MySQL 5.5.57-0+deb8u1-log
DB-Client: libmysql - 5.5.57

Neuer Server schrieb:
10-Core Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
64 GB RAM
DB-Server: MariaDB 10.1.26-MariaDB-0+deb9u1
DB-Client: libmysql - 5.5.60

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!
 
Werbung:
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?
 
Werbung:
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?
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 tippe mal auf gammelige Platten...
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:
Aktueller Produktivserver schrieb:
Schreibtest: 1073741824 Bytes (1,1 GB) kopiert, 21,983 s, 48,8 MB/s
Lesetest mit leerem Buffer Cache: 1073741824 Bytes (1,1 GB) kopiert, 50,4536 s, 21,3 MB/s
Lesetest mit gefülltem Buffer Cache: 1073741824 Bytes (1,1 GB) kopiert, 0,388695 s, 2,8 GB/s

Neuer Server schrieb:
Schreibtest: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.907415 s, 1.2 GB/s
Lesetest mit leerem Buffer Cache: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.539169 s, 2.0 GB/s
Lesetest mit gefülltem Buffer Cache: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.251757 s, 4.3 GB/s
 
Zurück
Oben