Mysql Низкая производительность MySQL на мощном железе

damner2

Новичок
На InnoDB примерно такая же, что тоже странно.
Хороший у вас VPS был (read/write requests: 29228.37 per sec.)

Думаю, вы от сервера хотите большего, чем он может дать.

Поищите в сети результаты такого теста на аналогичных вашему серверах. Есть подозрение, что производительность у них не будет гораздо больше вашей.

Ну и, естественно, нужно забыть про myisam на высоконагруженных проектах.
 

Сергей Тарасов

Профессор
Проблема решена переустановкой ОС и пакета MySQL. Никакие другие танцы с бубном не помогли. Сейчас все ок. Всем спасибо.
 

Активист

Активист
Команда форума
Интересно, а зачем автор ждет нагрузку на диск??! Почему на диск должна быть нагрузка, когда все в ОЗУ запихано. У меня на 32 гб, Xeon E5, SATA software raid 1 SATA результаты гораздо лучше (это при учете что на серваке 120 клиентов):

Код:
root@serv002:~# sysbench --num-threads=10 --test=oltp --mysql-host=127.0.0.1 --mysql-user=root --mysql-password=qq --oltp-table-size=500000 --mysql-table-engine=myisam prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Creating table 'sbtest'...
Creating 500000 records in table 'sbtest'...
root@serv002:~# sysbench --num-threads=10 --test=oltp --mysql-host=127.0.0.1 --mysql-user=root --mysql-password=qq --oltp-table-size=500000 --mysql-table-engine=myisam run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 10

Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using "LOCK TABLES WRITE" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.

OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           50000
        other:                           20000
        total:                           210000
    transactions:                        10000  (256.44 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 190000 (4872.45 per sec.)
    other operations:                    20000  (512.89 per sec.)

Test execution summary:
    total time:                          38.9947s
    total number of events:              10000
    total time taken by event execution: 389.5782
    per-request statistics:
         min:                                  3.11ms
         avg:                                 38.96ms
         max:                                 62.12ms
         approx.  95 percentile:              47.87ms

Threads fairness:
    events (avg/stddev):           1000.0000/0.00
    execution time (avg/stddev):   38.9578/0.01

root@serv002:~#
Тоже самое для inndb (конечно в разы лучше):

Код:
root@serv002:~# sysbench --num-threads=10 --test=oltp --mysql-host=127.0.0.1 --mysql-user=root --mysql-password=qq --oltp-table-size=500000 --mysql-table-engine=innodb run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 10

Doing OLTP test.
Running mixed OLTP 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
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.

OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           50000
        other:                           20000
        total:                           210000
    transactions:                        10000  (1156.23 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 190000 (21968.43 per sec.)
    other operations:                    20000  (2312.47 per sec.)

Test execution summary:
    total time:                          8.6488s
    total number of events:              10000
    total time taken by event execution: 86.3942
    per-request statistics:
         min:                                  2.20ms
         avg:                                  8.64ms
         max:                               3203.94ms
         approx.  95 percentile:               6.98ms

Threads fairness:
    events (avg/stddev):           1000.0000/43.67
    execution time (avg/stddev):   8.6394/0.00

root@serv002:~#
Тюнинг такой:

Код:
root@serv002:~# cat /etc/mysql/conf.d/tuning.cnf 
[mysqld]
max_connections = 200

# было 64
query_cache_size = 256M
join_buffer_size = 64M
tmp_table_size = 128M
max_heap_table_size = 128M

table_cache = 50K
innodb_buffer_pool_size = 1G

innodb_flush_log_at_trx_commit = 2
innodb_flush_method = "O_DIRECT"
transaction-isolation = "READ-COMMITTED"
 

Сергей Тарасов

Профессор
Это немного на другом сервере, тот сейчас на обслуживании - померить нет возможности.

Код:
sysbench --num-threads=10 --test=oltp --mysql-host=127.0.0.1 --mysql-user=sbtest --oltp-table-size=500000 --mysql-table-engine=innodb run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 10

Doing OLTP test.
Running mixed OLTP 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
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.

OLTP test statistics:
    queries performed:
        read:                            140014
        write:                          50005
        other:                          20002
        total:                          210021
    transactions:                        10001  (2052.60 per sec.)
    deadlocks:                          0      (0.00 per sec.)
    read/write requests:                190019 (38999.44 per sec.)
    other operations:                    20002  (4105.20 per sec.)

Test execution summary:
    total time:                          4.8724s
    total number of events:              10001
    total time taken by event execution: 48.6155
    per-request statistics:
        min:                                  3.19ms
        avg:                                  4.86ms
        max:                                23.59ms
        approx.  95 percentile:              6.63ms

Threads fairness:
    events (avg/stddev):          1000.1000/15.92
    execution time (avg/stddev):  4.8615/0.00
Еще раз повторюсь - проблема была в кривизне то ли пакета, то ли драйверов каких-то в дебиане. На свежем Ubuntu все взлетело. :)

Нагрузка на диск появляется, когда появляется запись :)

На самом деле, вопреки устоявшемуся мнению, в большинстве случаев узким местом для MYSQL (да и Postgres тоже) является не диск, а частота шины процессора / памяти. Проверено на практике.
 
Сверху