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:
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:
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:
Neuer Server:
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!
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!