YesYo.com MintState Forums  
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름  오토
비밀번호 
 

 
작성일 : 11-01-18 22:10
PHP를 이용하여 MYSQL Sleep 프로세스 죽이기
 글쓴이 : MintState
조회 : 8,394  
PHP에서 자동으로 MYSQL의 디비를 닫아(Closed)주기 때문에 굳이 mysql_close($dbconn); 를 쓸 필요는 없습니다.
그러나 MYSQL의 Sleep 프로레스가 너무 많이 늘어나는 것을 볼수 있습니다.
이것은 MYSQL의 wait timeout의 시간을 너무 많이 주어서 생기는 문제입니다.
서버마다 wait timeout값을 적정값을 설정해야 합니다.
[MySQL] time out(wait_timeout) 계산과 설정 - 여기를 참고하세요

my.cnf 파일을 수정하면 됩니다.
my.cnf 설정파일 - 여기를 참고하세요
램이 2기가인경우 아래 정도입니다.
max_connections = 200
wait_timeout = 30


max_connections 의 기본값은 100 이고 wait_timeout 의 기본값은 28,800 입니다.

다음과 같이 safe_mysqld을 실행시킬때 wait_timeout을 지정하는 방법도 있습니다.
safe_mysqld -O wait_timeout=30

또한 아래와 값이 PHP파일을 만들고 cron으로 주기적으로 돌려도 될것 같습니다.
<?
define('MAX_SLEEP_TIME', 120); 
$dbconn = @mysql_connect($dbConfig['host'],$dbConfig['user'],$dbConfig['pass']);

$result = mysql_list_processes($dbconn);
//mysql_list_processes 대신 아래와 같이 써도 됩니다.
//$result = mysql_query("SHOW PROCESSLIST", $connect); 
while ($row = mysql_fetch_assoc($result)){
    printf("%s %s %s %s %s\n<br />", $row["Id"], $row["Host"], $row["db"],
        $row["Command"], $row["Time"]);
		if ($row["Command"] == "Sleep"  && $row["Time"] > MAX_SLEEP_TIME) { 
				mysql_query("KILL " . $row["Id"], $dbconn);
				echo "KILL ID : ".$row["Id"]."<br />";
		}
}
mysql_free_result($result);
mysql_close($dbconn);
?>


참고로 어느분이 perl로 짜 놓으신 것입니다.
#!/usr/bin/perl
###############################################################################
# MySQL 에서 Sleep 프로세스 죽이기
# 2003.02 by Oh Jung Joon
###############################################################################

###############################################################################
# Variables
###############################################################################
use DBI;

$hostname = "localhost"; 
$database = "mysql";  
$mysql_id = "root"; 
$mysql_pw = "password"; 

$dsn = "DBI:mysql:database=$database;host=$hostname"; 
###############################################################################
 
 $dbh = DBI->connect($dsn,$mysql_id,$mysql_pw) 
  or die "Unable to connect to contacts Database: $dbh->errstr\n";

 $query="show processlist";
 $cursor=$dbh->prepare($query);
 $cursor->execute;

 while (@field = $cursor->fetchrow)
 {
  ($id,$user,$host,$db,$command,$time,$state,$info)=@field;
  print "[$id | $user | $host | $db | $command | $time | $state | $info] ";
  if ( ($command eq 'Sleep') && ($time > 500) )
  {
   $query2="kill $id";
   $dbh->do($query2);
   print "  == > Killed";
  }
  print "\n";
 }
 $cursor->finish;
 $dbh->disconnect;
 exit;
Rated 5.0/5 (100%) (1 Votes)

(\__/)
(='.'=)
(")_(")~
Search Infomation by MintState
MintState

 
 

Total 160
번호 제   목 글쓴이 날짜 조회
160 첫문자를 대문자, 소문자로 변경하는 함수 MintState 08-08 166
159 header를 이용한 페이지 이동 함수 MintState 07-31 173
158 URL에서 한글만 인코딩 MintState 05-29 268
157 youtube preg_replace pattern MintState 02-22 541
156 특정 디렉토리의 하위파일 목록 가져오기 MintState 02-21 520
155 [정규식] 해시태그(#) 뽑아내기 MintState 11-12 2395
154 serialize unserialize 배열정보를문자열의 형태로 변환 MintState 12-08 2447
153 실시간 화면 출력 flush, ob_flush MintState 02-26 4834
152 [MYSQL] 생년월일로 나이 반환 MintState 01-22 6823
151 php 절사 MintState 07-27 4772
150 Referer URL 이용하여 검색엔진 키워드 뽑아내기 MintState 02-10 5340
149 달력 소스 MintState 10-21 5566
148 MYSQL 예약어 MintState 05-02 7797
147 페이징 클래스 v1.0 (PHP4/5) MintState 04-18 6628
146 GD 라이브러리 MintState 04-17 7192
145 GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기 MintState 04-17 6632
144 xml 통신(수신) - Web 언어별 MintState 03-14 7131
143 무조건 알아야 할 PHP 속도 테스트 14 가지 MintState 03-04 6805
142 PHP를 이용하여 MYSQL Sleep 프로세스 죽이기 MintState 01-18 8395
141 youtube 주소로 정보 반환 MintState 07-02 8618
140 방문자의 브라우저와 OS등을 가져 오는 클레스 MintState 07-02 11101
139 Allowed memory size Error 발생시 처리방법 MintState 06-30 9071
138 AES 256-bit 암호화 MintState 04-28 14542
137 PHP 5.3.0 부터 POSIX Regex 함수 제거 MintState 02-12 8417
136 [Function] json_encode(), json_decode() MintState 01-13 14426
 1  2  3  4  5  6  7  
모바일 버전으로 보기
CopyRight ©2004 - 2017, YesYo.com MintState. ™