在 Debian 上 MySQL(或 MariaDB)占用高,通常不是“系统问题”,而是配置或业务负载导致的。下面按最常见原因 → 排查方法 → 解决建议来说明。
在 Debian 上执行:
top
# 或
htop
看是:
SHOW PROCESSLIST;
如果看到大量:
SleepQuery说明:
SHOW VARIABLES LIKE 'max_connections';
适当限制:
[mysqld]
max_connections = 200
应用端使用连接池(如 PHP: pdo_mysql, Java: HikariCP)
SHOW FULL PROCESSLIST;
看是否有:
Sending data 状态[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
分析:
mysqldumpslow /var/log/mysql/slow.log
SELECT *Debian 默认配置可能不适应你的机器。
查看内存占用:
free -h
常见参数:
innodb_buffer_pool_size
key_buffer_size
| 内存 | innodb_buffer_pool_size |
|---|---|
| 1G | 256M |
| 2G | 512M–1G |
| 4G | 2G |
修改:
[mysqld]
innodb_buffer_pool_size = 512M
尤其是:
CHECK TABLE table_name;
优化:
OPTIMIZE TABLE table_name;
如:
检查:
systemctl status mysql
journalctl -u mysql
常见:
# 连接数
mysql -e "SHOW STATUS LIKE 'Threads_connected';"
# 慢查询
mysql -e "SHOW STATUS LIKE 'Slow_queries';"
# 内存配置
mysql -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"
你可以贴出:
cat /etc/os-release)top 截图或输出SHOW PROCESSLIST; 结果我可以直接告诉你是哪一条在吃资源,以及该怎么改配置。