사이트 응급조치 : 웹페이지에서 db sleep process 죽이기(DB부하 줄이기)

결과적으로 당장 코드 리펙토링(코드 최적화)는 힘들고 그간 버텨야할때,
이것을 페이지 하단에 부착합니다.
사이트를 접속하는 유저,로봇들이 알아서 sleep process를 kill 하는 기능입니다.


규모가 너무 커서, 또는 모듈화하지 않아서 페이지에 쿼리가 종료되는 곳을 당장찾기 힘들때!
이것을 달아두면 $sleepTime 설정해둔 초를 지나버린 쿼리들을 찾아서 해당 query프로세스를 죽입니다
초를 너무 짧게 설정하시면 정상적으로 화면에 로드되기전에 프로세스를 죽일수 있으니
커뮤니티나 사이트의 쿼리당 실행시간을 체크하시어, 조금 높게 설정하시면됩니다

<?
$sleepTime=30; // 쿼리를 실행하고 30초 이상지나면 killling 합니다.

// 디비커넥션이 되어있는 상태여야합니다.
$tmpConnect = mysql_connect("호스트명","DB계정아이디","DB패스워드");
mysql_select_db("데이터베이스명", $tmpConnect);
$tmpSql="SHOW PROCESSLIST";
$tmpQuery=mysql_query($tmpSql); 
?>
<ol>
<? 
while($tmpData=mysql_fetch_assoc($tmpQuery)) {
echo "<li>";
if($tmpData["Command"]=="Sleep" && $tmpData["Time"] > $sleepTime) {
// DB프로세스중 Sleep상태로 30초이상 된 좀비가 있으면 살해 ㅠㅠ..(불쌍해)
@mysql_query("KILL ".$tmpData["Id"], $tmpConnect); // 너와함께라 행복했어 byebye..ㅠㅠ
}
// 저는 print_r을통해 실행시간과 어떤 쿼리의 sleep가 길어지는 지 탐색합니다.
print_r($tmpData);
echo "</li>";
}
mysql_free_result($tmpQuery); // 버퍼를 초기화 합니다.
mysql_close($tmpConnect); // SQL종료 : 오늘도 보람찬 하루였습니다.
?>
</ol>
임시조치이므로 가급적, 페이지 전체의 코드 최적화를 진행하세요.^^;
가급적 보기쉽게 하려고 EditPlus의 하이라이팅에 비슷하게 한땀한땀 색깔을 넣었습니다.ㅠㅠ
타 텍스트에디터 유저님들께 송구스럽습니다.
|

댓글 10개

실행되는 모든 페이지에 넣어야 하는것은 아니겠죠?
일반적으로 DB 프로세스가 좀비가 되지 않는 곳은 안써도되구요.
굳이 쓰자면,관리페이지에서 sleep time을 120초정도 잡아두고
어떤 페이지에서 쿼리가 좀비가 되는지 확인하는용도 (링크1)처럼 쓸수있어요

그리고 실제로 DB부하로 뻗어버리는 사이트는 대부분 sleep 되는 쿼리가 쌓여서 그런거라서, 당장 해결불가능할때 쓰는 응급조치법이예요~

운용중인 저희 회사 사이트의 경우 슬로우 쿼리잡기엔 너무 여러업체가 손대어서 찬찬히 고쳐나가야하기때문에, 인덱스를 제외한 전 페이지에 설치해두고 확인해보니 70%이내로 부하율이 떨어졌어요 기존에 가끔 100%이상 되어서, 사이트가 안열렸었어요.
// 너와함께라 행복했어 byebye..ㅠㅠ

이 주석 반드시 넣어야 하나요? ㅠㅠ
안그러면 프로세스에게 미안하잖아요 ㅠㅠ
듣고 보니 그렇네요. ㅠㅠ
고맙습니다 ^^
몇개 업체들이 저런 상황이라 튜닝( 소스와 DB )을 한적이 있는데
저 소스까지 사용해야 할 정도라면 얼렁 튜닝으로 문제되는 부분을
개발자에게 의뢰 하셔야 합니다.

운영하는 사이트 또는 어플의 소스와 DB 을 손봐 주셔야 해요
하드웨어 확장을 한다고해도 한계가 있습니다.

아시다싶이 저게 계속 쌓이면 정말 운영상에 큰 타격이 가거든요...
땜빵도 어느선까지만 가능한것 같아요
넹 그렇죠, 그래서 응급조치인것이예요 ^^!
다른분들은 phpMyadmin 에서
마우스로 클릭하며 삭제하시더라구요..ㅋㅋ

아주 응급일땐 편할것 같아요...^--^
넹 phpMyAdmin에서 클릭하는것보단!
손이 덜가요 ㅎㅎㅎㅎ
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
14년 전 조회 2,230
14년 전 조회 825
14년 전 조회 3,738
14년 전 조회 3,860
14년 전 조회 1,219
14년 전 조회 797
14년 전 조회 1,462
14년 전 조회 720
14년 전 조회 1,050
14년 전 조회 617
14년 전 조회 7,452
14년 전 조회 1,142
14년 전 조회 540
14년 전 조회 706
14년 전 조회 1,407
14년 전 조회 844
14년 전 조회 688
14년 전 조회 800
14년 전 조회 745
14년 전 조회 564
14년 전 조회 720
14년 전 조회 697
14년 전 조회 680
14년 전 조회 743
14년 전 조회 988
14년 전 조회 1,017
14년 전 조회 1,231
14년 전 조회 898
14년 전 조회 796
14년 전 조회 691
14년 전 조회 651
14년 전 조회 654
14년 전 조회 826
14년 전 조회 2,060
14년 전 조회 689
14년 전 조회 1,015
14년 전 조회 2,184
14년 전 조회 1,302
14년 전 조회 1,071
14년 전 조회 4,799
14년 전 조회 2,019
14년 전 조회 847
14년 전 조회 734
14년 전 조회 697
14년 전 조회 585
14년 전 조회 1,851
14년 전 조회 3,170
14년 전 조회 666
14년 전 조회 866
14년 전 조회 1,847
14년 전 조회 713
14년 전 조회 1,365
14년 전 조회 1,704
14년 전 조회 1만
14년 전 조회 1,225
14년 전 조회 1,039
14년 전 조회 1,762
14년 전 조회 1,802
14년 전 조회 986
14년 전 조회 1,061
14년 전 조회 882
14년 전 조회 2,525
14년 전 조회 681
14년 전 조회 818
14년 전 조회 1,907
14년 전 조회 2,172
14년 전 조회 624
14년 전 조회 1,002
14년 전 조회 784
14년 전 조회 848
14년 전 조회 1,043
14년 전 조회 860
14년 전 조회 756
14년 전 조회 570
14년 전 조회 560
14년 전 조회 782
14년 전 조회 914
14년 전 조회 757
14년 전 조회 728
14년 전 조회 2,553
14년 전 조회 1,030
14년 전 조회 1,201
14년 전 조회 1,179
14년 전 조회 1,622
14년 전 조회 2,015
14년 전 조회 705
14년 전 조회 886
14년 전 조회 1,915
14년 전 조회 911
14년 전 조회 2,201
14년 전 조회 692
14년 전 조회 893
14년 전 조회 1,017
14년 전 조회 2,130
14년 전 조회 940
14년 전 조회 3,300
14년 전 조회 1,072
14년 전 조회 609
14년 전 조회 934
14년 전 조회 760