mysql sleep 자동 킬 스크립트

음 php 프로그래머의 실수에 따라 DB사용을 하지 않으나 장시간 sleep이 나는 경우가 있다.

뭐 프로그램 짜다보면 그럴수 있을것이다 =3=a

  •  프로그램이 mysql_pconnect 을 사용하거나 (apache keepalive 시간 동안 접속을 대기 탈 것이다.)
  • mysql 접속후 mysql.close()를 안했거나
  • 로그테이블 등의 크기가 커져서 lock 걸리는 시간이 증가하면 다른 접속자 로그를 쓰기 위해 wait 가 걸리기 때문에 mysql 커넥션이 과도하게 증가하기도 함..
  • 서버 사양 대비 동시접속자수가 많거나…

서버 관리자 입장에서는 서버 메모리에 부담을 주고 sleep 프로세스의 과다 접속에 의해 my.cnf에서 설정된

max connctions 값 에 의해 추가 신규 접속이 불가능한 상황을 방지 해야 한다.

그리하여 이러한 스크립트를 만들었습니다 🙂 – (mysql.close()가 제대로 되지 않는 경우를 상정.)

all_user_target 값을 Y로 해두면 모든 계정에 대해 kill을 수행합니다만.

ssh 접속해서 mysql 작업하면서 장시간 가만히 있으면 강제적으로 프로세스 종료 까지 될수 있습니다.

그래서 all_user_target=”N” 으로 하고 문제시 되는 계정만 target_id 에 설정하여 운용하도록 합니다. ‘ㅅ’a

 

PS. pconnect 를 사용하면 일반 connect 으로 사용하도록 유도 하고, log 테이블이 커졋다면 일정부분 날려서 정리를 해야 할꺼고 사양이 부족하다면 사양 업그레이드를 하거나 DB query cache 를 구현 하는 방법으로 해결 해야 할꺼 같다 ‘ ‘a 이 스크립트는 임시 방편일 뿐이다.