20250608性能测试实战

教程地址

项目实战 - 霍格沃兹测试开发学社-教程网站 (ceshiren.com)

查询mysql的当前活跃连接数

  • SHOW STATUS WHERE variable_name= 'Threads_connected';

查询数据库最大连接池

  • SHOW VARIABLES LIKE 'max_connections';

docker-compose 安装

  • pip install docker-compose

docker-compose.yml

version: '3.8'

services:
  traefik:
    image: traefik:v2.5
    container_name: traefik
    ports:
      - "8095:80"
      - "8099:8080"
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    restart: unless-stopped

  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    restart: unless-stopped
    depends_on:
      - prometheus

  redmine:
    image: bitnami/redmine:5.0.5-debian-11-r4
    restart: always
    depends_on:
      - db
    environment:
      TZ: "Asia/Shanghai"
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: 'MZ4LY8QIyy'
      REDMINE_SECRET_KEY_BASE: supersecretkey
      REDMINE_DATABASE_TYPE: mariadb
      REDMINE_DATABASE_NAME: my_database
      REDMINE_DATABASE_USER: bn_redmine
      REDMINE_USERNAME: user
      REDMINE_LANG: en
    deploy:
      replicas: 2
      resources:
        limits:
          cpus: '0.50'
          memory: 512M
    labels:
      - "traefik.http.routers.redmine.rule=Host(`39.102.48.202`)"
      - "traefik.http.services.redmine.loadbalancer.server.port=3000"

  db:
    image: bitnami/mariadb:10.6.12-debian-11-r13
    restart: always
    volumes:
      - mysql_data:/bitnami/mariadb/data/
    environment:
      TZ: "Asia/Shanghai"
      MARIADB_DATABASE: my_database
      MARIADB_USER: bn_redmine
      MARIADB_PASSWORD: MZ4LY8QIyy
      MARIADB_ROOT_PASSWORD: MZ4LY8QIyy

  mysql-exporter:
    image: prom/mysqld-exporter:latest
    container_name: mysql-exporter
    environment:
      DATA_SOURCE_NAME: root:MZ4LY8QIyy@tcp(db:3306)/
    restart: unless-stopped
    depends_on:
      - db

volumes:
  grafana_data:
  mysql_data:


promethues.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: [ 'cadvisor:8080' ]

  - job_name: 'mysql'
    static_configs:
      - targets: [ 'mysql-exporter:9104' ]