#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
как вы видите, функция записи намного больше, чем Чтение…