[DB] mysql 부하 확인 _show processlist/slow_log
웹사이트가 느리거나 에러 난다고 함.
원인이 뭘까 하고 이것저것 보는데 DB CPU가 70% 나옴.
show processlist;
SHOW PROCESSLIST는 실행중인 스레드를 보여준다고 함.
(ID / USER / Host / DB / COMMAND / TIME / STATE / INFO)
암튼 show processlist로 Time이 100초가 넘어가도 돌고 있는거 발견.
Info컬럼에 보니 select문 이였음.
(KILL ID << 문제되는 스레드 중지 시킬 수 있음. insert나 update문이라면 생각을 좀....)
근데 info에 정보가 다 나오지 않았음. select가 중간에 짧림.
대충 어느 쿼리인줄 알지만 그래도 정확하게 알기 위해서 slow_log로 확인.
(slow log 설정은 되어있었음)
SELECT * FROM mysql.slow_log;
(start_time / user_host / query_time / lock_time / rows_sent / rows_examined / db
/ last_insert_id / server_id / sql_text / thred_id)
해당 log는 찾았지만 sql_text가 blob로 되어 있어서 내용은 바로 알 수 없음.
SELECT *, CAST((sql_text) AS CHAR(10000) CHARACTER SET utf8) AS sql_text_str FROM mysql.slow_log;
다시 select 문 확인해서 문제 되는 부분 수정해서 해결
댓글
댓글 쓰기