mariadb v10.6.5 性能/吞吐量仅通过使用主机的真实 IP 地址而不是 127.0.0.1 或 localhost 就提高了一倍以上。这个问题显然是由后一种情况下的更高延迟引起的,可以通过使用下面提供的docker-compose.yml
文件运行 mariadb 轻松验证。有谁知道为什么会有这样的性能损失?与 docker 网络层增加一些延迟和增加延迟有什么关系吗?(请观察 sysbench 的第 95 个百分位数)
version: '3.9'
services:
db:
image: mariadb
container_name: mariadb
hostname: mariadb
ports:
- 3306:3306
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --skip-innodb-read-only-compressed --disable-log-bin
restart: always
volumes:
- ./config:/etc/mysql/mariadb.conf.d
- ./data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=YourMegaSecretPasswd
- MYSQL_DATABASE=sbtest
- MYSQL_USER=sbtest
- MYSQL_PASSWORD=sbtesting
networks:
- database
networks:
database:
external: true
sysbench 命令如下(例如):
export sbhost=127.0.0.1
export sbport=3306
export sbthreads=4
export sbtables=8
export sbtime=120
export sbdb=mysql
# populate test tables with data
sysbench /usr/share/sysbench/oltp_read_only.lua \
--db-driver=$sbdb --$sbdb-host=$sbhost --$sbdb-port=$sbport --$sbdb-user=sbtest --$sbdb-password=sbtesting \
--threads=$sbthreads --tables=$sbtables --table-size=1000000 prepare
# run db read-only test
sysbench /usr/share/sysbench/oltp_read_only.lua \
--db-driver=$sbdb --$sbdb-host=$sbhost --$sbdb-port=$sbport --$sbdb-user=sbtest --$sbdb-password=sbtesting \
--tables=$sbtables --table-size=1000000 --range_selects=off --threads=$sbthreads --events=0 \
--time=$sbtime --report-interval=10 run
现在用例如交换IP地址:export sbhost=192.168.0.11
并再次运行相同的(第二个)sysbench命令......瞧!性能恢复。