0

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命令......瞧!性能恢复。

4

0 回答 0