Free Database Audit: comprehensive health report for your database

Learn More
online/mysql 8.0+/client-side only/0 bytes egress

mysql@jusdb > TUNE my.cnf \G

MySQL Config Optimizer

A workload-tuned my.cnf in seconds — production-grade connection sizing, innodb_buffer_pool_size + per-thread memory math sourced from the MySQL Reference Manual, with an OOM-risk check on every line it writes.

+OLTP / OLAP / Mixed+memory footprint analysis+OOM-risk warnings+runs in your browser
Buffer pool
13G
Max connections
1,400
Redo log (disk)
4G
Thread cache
175

Server profile

OS reserve auto-derived for a dedicated Linux MySQL box (kernel + systemd + sshd + monitoring + page-cache headroom).

Memory footprint

16 GB budget
Realistic96%
Worst-case149%
Buffer pool
Connections
OS reserve
Buffer pool13 GB
Engine overhead584 MB
Connections1.8 GB
OS reserve2.3 GB

RAM allocations only. Buffer pool absorbs whatever's left after OS reserve, log_buffer, and engine overhead. The redo log (shown separately above) lives on disk in #innodb_redo/ — it doesn't consume RAM. Per-thread budget uses realistic utilization (small buffers 50% active, tmp_table 5%).

Disk usage estimate

beyond user data volume
Redo log
4 GB
Fixed, in #innodb_redo/
Binlog (≈7 days)
34.2 GB205.1 GB
Range — depends on write rate
Slow log
500 MB
Rotates by file size

Estimates for OLTP workload. On a busy box, plan EBS/SSD for at least 209.6 GB of MySQL log volume in addition to your data volume.

my.cnf
1# ─────────────────────────────────────────────────────────────────────
2# my.cnf — generated by JusDB MySQL Config Optimizer
3# https://www.jusdb.com/tools/mysql-optimizer
4#
5# Role: Standalone (no replication)
6# Workload: OLTP (transactional, short queries)
7# Storage: NVMe SSD
8# Total RAM: 16384 MB
9# Static RAM alloc: 16339 MB of 16384 MB (pool + log_buf + engine + OS reserve)
10# Max connections: 1400 ceiling, ~350 realistic active load
11#
12# Review every value before applying. These are conservative starting
13# points sized off your inputs — your workload's real shape (query mix,
14# index quality, write rate) will move the optimal values up or down.
15# ─────────────────────────────────────────────────────────────────────
16 
17[mysqld]
18 
19# ── InnoDB engine ──
20innodb_buffer_pool_size = 13G
21innodb_buffer_pool_instances = 13
22innodb_buffer_pool_chunk_size = 128M
23innodb_redo_log_capacity = 4G
24innodb_log_buffer_size = 64M
25innodb_flush_method = O_DIRECT
26innodb_flush_log_at_trx_commit = 1
27innodb_flush_neighbors = 0
28innodb_io_capacity = 4000
29innodb_io_capacity_max = 20000
30innodb_read_io_threads = 4
31innodb_write_io_threads = 4
32innodb_thread_concurrency = 0
33 
34# ── Connection handling ──
35max_connections = 1400
36thread_cache_size = 175
37max_allowed_packet = 64M
38 
39# ── Per-thread buffers ──
40sort_buffer_size = 2M
41join_buffer_size = 2M
42read_buffer_size = 1M
43read_rnd_buffer_size = 1M
44tmp_table_size = 32M
45max_heap_table_size = 32M
46 
47# ── Slow query logging ──
48slow_query_log = ON
49long_query_time = 1
50log_output = FILE
51log_queries_not_using_indexes = ON
52 
53# ── Binlog / replication ──
54binlog_format = ROW
55sync_binlog = 1
56binlog_cache_size = 1M
57binlog_expire_logs_seconds = 604800
58binlog_row_image = MINIMAL
59 
60# ── Misc ──
61performance_schema = ON
62table_open_cache = 4000
63table_definition_cache = 2000
64skip_name_resolve = ON
65 

Want this validated against your real workload?

This my.cnf is a defensible starting point for a 16 GB OLTP box on NVMe with up to 1,400 connections. JusDB tunes it against your actual query mix, index quality, and replication topology — usually in a single working session.