在 Debian 上 MySQL(或 MariaDB)占用过高,通常指 CPU、内存或磁盘 I/O 过高。下面按常见原因 + 排查方法 + 解决建议系统说明。
top
htop
free -h
df -h
iostat -x 1
重点看:
表现:CPU 高,但内存不一定高
SHOW PROCESSLIST;
看是否有:
Sending dataCopying to tmp tableQuery开启慢查询日志:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
或 Debian 配置文件:
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
SELECT *LIKE '%xxx%'表现:内存暴涨,连接数异常
SHOW STATUS LIKE 'Threads_connected';
SHOW PROCESSLIST;
max_connections = 200
wait_timeout = 60
interactive_timeout = 60
表现:内存占用异常高或过低
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
innodb_buffer_pool_size = 物理内存的 60%~70%
innodb_buffer_pool_size = 256M
表现:磁盘 IO 高
SHOW STATUS LIKE 'Created_tmp_disk_tables';
tmp_table_sizeGROUP BY / ORDER BY表现:磁盘占用高
du -sh /var/lib/mysql
expire_logs_days = 7
或 MySQL 8:
SET GLOBAL binlog_expire_logs_seconds = 604800;
表现:大量短连接、异常 IP
netstat -ant | grep 3306
Debian 默认可能是 MariaDB
mysql --version
配置文件位置:
/etc/mysql/my.cnf
/etc/mysql/mariadb.conf.d/
systemctl status mysql
journalctl -u mysql
如果你愿意,可以贴:
top 输出SHOW PROCESSLIST;my.cnf我可以 直接帮你定位是哪一类问题。