mysql内存占用过高_mysql占用内存过高排查
排查點:數據庫配置,數據分區、定時事件、存儲過程
觸發原因:java服務莫名的掛掉了
機器信息:centos 7 ,騰訊云服務器1核2G,只安裝了mysql和運行一個java服務。
經過排查過程:
查進程id
ps -ef |grep mysql
查詢占用內存,cpu情況
top -p [進程id]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12799 mysql 20 0 1793884 279132 12600 S 0.3 44.8 0:05.59 mysqld
發現mysql進程剛剛啟動的時候占用內存挺低了25%左右,基本能接受,但是過了十分鐘左右就到45%了,心態。。。。。
開始
查看博客https://blog.csdn.net/kouryoushine/article/details/89354949
說可能是因為innodb_buffer_pool_size配置太高了,結果看了自己的配置才134MB,覺得配置合理。覺得問題原因不匹配,放棄。
第二
查看數據的大小,突然發現有個test庫,有4G這么大,然后一看發現之前做了定時分區的測試,有定時寫入、存儲過程等。
比如:
#每分鐘寫入一條數據定時任務
create definer = root@`%` event event_every_minute_call_insert on schedule
every '1' MINUTE
starts '2019-09-17 16:09:38'
on completion preserve
enable
do
call procedure_auto_insert_minute();
create
definer = root@`%` procedure procedure_auto_insert_minute()
BEGIN
declare i int default 0;
while (i < 5)
do
insert into t_auto_insert_minute
values (0, concat('procene', i), now(), concat(date_format(now(), '%Y%m%d%H'), minute(now())));
set i = i + 1;
end while;
END;
把這些關掉,然后top -p,內存占用就降低到14%了。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12799 mysql 20 0 1793884 279132 12600 S 0.3 14.8 0:05.59 mysqld
總結
以上是生活随笔為你收集整理的mysql内存占用过高_mysql占用内存过高排查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用python进行假设假设检验
- 下一篇: mysql查询数学成绩信息_【MySQL