[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 문 확인해서 문제 되는 부분 수정해서 해결

댓글

이 블로그의 인기 게시물

[DB] Mysql 숫자 기준으로 정렬하기.

[WEB] ASP.NET System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

[문서] excel 체크박스 삭제