表示 进入内容 12
Displaying posts with tag: 性能分析 (reset)
瞬发大量并发连接 造成MySQL连接不响应的分析

现象

Sysbench对MySQL进行压测, 并发数过大(>5k)时, Sysbench建立连接的步骤会超时.

猜想

猜想: 直觉上这很简单, Sysbench每建立一个连接, 都要消耗一个线程, 资源消耗过大导致超时.

验证: 修改Sysbench源码, 调大超时时间, 仍然会发生超时.

检查环境

猜想失败, 回到常规的环境检查:

  1. MySQL error log 未见异常.
  2. syslog 未见异常.
  3. tcpdump 观察网络包未见异常, 连接能完成正常的三次握手; 只观察到在出问题的连接中, 有一部分的TCP握手的第一个SYN包发生了重传, 另一部分没有发生重传.
  4. 自己写一个简单的并发发生器, 替换sysbench, 可重现场景. 排除sysbench的影响
[获取更多]
MySQL 单线程insert的性能模型

背景

建立MySQL的性能模型, 对 MySQL的服务器参数调优 和 容量规划 有很大意义.

性能模型指的是如何通过观测得到量化的性能数值, 并能对 环境调整造成的影响 进行准确的量化预测.

其中最简单的性能模型是使用单线程进行insert.

测试场景

  1. MySQL 5.7.12
  2. 主要测试 不同刷盘参数 对性能的影响, 使用以下三个场景:
    1. sync_binlog=1, innodb_flush_log_at_trx_commit=1, 简写为b1e1 (binlog-1-engine-1)
    2. sync_binlog=0, innodb_flush_log_at_trx_commit=1, 简写为b0e1
    3. sync_binlog=0, innodb_flush_log_at_trx_commit=0, 简写为b0e0

MySQL 环境搭建使用 MySQL sandbox, 对应三个场景的启动参数如下:
1. ./start --sync-binlog=1 --log-bin=bin …

[获取更多]
表示 进入内容 12