排查點:數(shù)據(jù)庫配置,數(shù)據(jù)分區(qū)若贮、定時事件、存儲過程
觸發(fā)原因:java服務(wù)莫名的掛掉了
機(jī)器信息:centos 7 ,騰訊云服務(wù)器1核2G,只安裝了mysql和運行一個java服務(wù)俄认。
經(jīng)過排查過程:
查進(jìn)程id
ps -ef |grep mysql
查詢占用內(nèi)存,cpu情況
top -p [進(jìn)程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
發(fā)現(xiàn)mysql進(jìn)程剛剛啟動的時候占用內(nèi)存挺低了25%左右洪乍,基本能接受眯杏,但是過了十分鐘左右就到45%了,心態(tài)壳澳。岂贩。。巷波。萎津。
開始
查看博客https://blog.csdn.net/kouryoushine/article/details/89354949
說可能是因為innodb_buffer_pool_size配置太高了,結(jié)果看了自己的配置才134MB抹镊,覺得配置合理锉屈。覺得問題原因不匹配,放棄垮耳。
第二
查看數(shù)據(jù)的大小颈渊,突然發(fā)現(xiàn)有個test庫遂黍,有4G這么大,然后一看發(fā)現(xiàn)之前做了定時分區(qū)的測試俊嗽,有定時寫入雾家、存儲過程等。
比如:
#每分鐘寫入一條數(shù)據(jù)定時任務(wù)
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;
把這些關(guān)掉,然后top -p绍豁,內(nèi)存占用就降低到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