Sysbench тестирует Mysql, но не читает с диска

#mysql #buffer #sysbench

#mysql #буфер #sysbench

Вопрос:

Когда я использую sysbench для тестирования mysql, я использую iotop для мониторинга ввода-вывода, и я нахожу, что есть только DiSH WRITE скорость, DISK READ скорость всегда равна 0. Затем я использую free -h и обнаруживаю, что буфер / кэш увеличиваются, означает ли это, что тестовые данные sysbench записываются не на диск, а в буфер и не обновляются автоматически на диск?

Большое вам спасибо!

Ответ №1:

где запущен mysql?? Я не знаю об iotop и его измерениях, но даже крошечные запуски sysbench генерируют огромный ввод-вывод. возможно, это может быть проблема пользователя, возможно, mysql генерирует ввод-вывод под другим пользователем и не получает доступ.

 # you can isolate the db into a container and run sysbench against this to see
# if/when/how much IO there is.

docker run --rm -it --name mdb105 --network host -e MYSQL_ALLOW_EMPTY_PASSWORD=on mariadb:10.5 --port=10306

# in another terminal run
docker stats

# now run sysbench, and you will see enormous IO

# you can get another shell in container named mdb105 by:
docker exec -it --user root mdb105 bash

# mariadb:10.5 is based on ubuntu:20.04
# you could maybe run iotop inside the container

  

Обновление: я смог воспроизвести что-то вроде вашей ситуации с нулевым вводом-выводом с использованием raspberry pi. действительно, статистика docker показывает отсутствие ввода-вывода, хотя данные явно сохраняются на диск. моей первоначальной реакцией было то, что, возможно, в некоторых ядрах / дистрибутивах отсутствуют определенные возможности, но похоже, что это не ядро / дистрибутив, потому что я видел ввод-вывод, когда играл с disk / fs, т. е. с расширенным USB-диском… я думаю, что это было больше связано с картой micro sd и ее контроллером / драйверами, которые не поддерживают такого рода статистику. и поскольку ваш tps очень низкий, я подозреваю, что вы также используете что-то похожее на micro sd.

скорее всего, этого не произойдет в экземпляре ec2.

Комментарии:

1. Mysql запускается в docker, и это часть выхода из sysbench [ 5s ] thds: 10 tps: 62.93 qps: 1296.52 (r/w/o: 908.96/259.70/127.85) lat (ms,95%): 411.96 err/s: 0.00 reconn/s: 0.00 , это означает, что в mysql есть операции чтения и записи, но когда я использую docker stats для мониторинга mysql, я наблюдаю, что ЧТЕНИЕ в БЛОКЕ ввода-вывода не увеличивается.

2. эти цифры несколько занижены. 10 tps и 62 запроса в секунду?? Я бы ожидал гораздо большего количества tps и qps даже от одноядерной машины. тем не менее, если вы дадите ему поработать пару минут, вы должны увидеть ввод-вывод в статистике docker. как вы подготовили базу данных ?? или вы вообще запускали команду sysbench prep?? опубликуйте свои команды sysbench. кроме того , у вас все еще есть mysql, запущенный на хосте, когда вы запускали эфемерный контейнер ?? если это возможно, он снова подключился к хосту беззвучно, возможно, через доменный сокет unix

3. добавил больше информации к сообщению.

4. Спасибо вам за вашу помощь. Мой TPS равен 62,93; 10 — это потоки. Mysql запускается в docker, и на хосте НЕТ mysql. команда sysbench prepare является sysbench oltp_read_write.lua --tables=10 --table_size=300000 --threads=10 --rand-type=uniform --db-driver=mysql --mysql-db=sysbench --mysql-user=root --mysql-password=123456 --mysql-host=192.168.1.206 --mysql-port=3306 prepare и похожа на команду run. Что меня беспокоит, так это то, что Mysql записывает много данных на диск, НО почти не читает с диска.

5.И это некоторая информация из /sys/fs/cgroup/blkio/docker/mysql/blkio.io_service_bytes : 8:0 Read 856064 8:0 Write 1904771072 8:0 Sync 1905627136 8:0 Async 0 8:0 Total 1905627136 Total 1905627136 как вы видите, функция записи намного больше, чем Чтение…