processlist의 mysql 절전 상태 프로세스에 대해 걱정해야합니까?


답변:


17

우리 중 가장 강력한 사람들조차 가끔 자야합니다. 수면이 없으면 불안해져 불면증이 모든 종류의 심각한 증상을 유발할 수 있습니다.

더 심각하게 : 휴면 상태는 MySQL 프로세스가 쿼리를 수행했지만 클라이언트 측이 아직 종료되지 않았 음을 의미합니다. 많은 웹 응용 프로그램은 나중에 연결을 정리하지 않으므로 MySQL 프로세스가 절전 모드로 전환됩니다. 소수만 있으면 걱정하지 마십시오. MySQL은 구성 가능한 시간 초과 기간 (wait_timeout)이 지난 후 정리합니다.

또는 웹 응용 프로그램이 영구 연결 및 연결 풀링을 사용하는 경우 많은 휴면 프로세스를 갖는 것이 일반적으로 정상입니다.이 경우 응용 프로그램은 예를 들어 100 개의 SQL 연결을 열어 열어 둡니다. 연결 열기 / 닫기 오버 헤드가 줄어 듭니다. 응용 프로그램이 매우 바쁜 경우가 아니면 거의 모든 SQL 프로세스에 수행 할 작업이있는 것은 아니므로 잠자기 상태입니다.


5

아니요, 수천 개가 아니라면 걱정하지 마십시오. 일반적으로 이들은 현재 아무 것도하지 않고 있지만 여전히 살아있는 데이터베이스 연결을 나타냅니다.

많은 웹 사이트는 페이지 처리가 시작될 때 데이터베이스 연결이 열린 다음 페이지 생성 전체에서 사용되어 결국에는 폐기되도록 구축됩니다. 삭제가 올바르게 수행되면 데이터베이스 연결이 닫히고 서버가 관련 스레드를 종료하므로 프로세스 목록에서이 연결이 사라집니다.

연결이 닫히지 않으면 시간 초과 될 때까지 "SLEEP"상태로 유지 될 수 있습니다. 이 경우 많은 수면 프로세스가 발생할 수 있습니다. 그러나 DB 서버에서 메모리 문제가 발생하지 않는 한 큰 문제는 아닙니다.


3

max_connections 변수를 늘리기 전에 show processlist 명령을 실행하여 비 대화식 연결 수를 확인해야합니다.

휴면 연결이 많은 경우 "wait_timeout"변수의 값을 줄여서 몇 번 기다린 후 비 대화식 연결을 닫아야합니다.

  • wait_timeout 값을 표시하려면 다음을 수행하십시오.
'wait_timeout'과 같은 세션 변수 표시

+ --------------- + ------- +
| Variable_name | 가치 |
+ --------------- + ------- +
| wait_timeout | 28800 |
+ --------------- + ------- +

값은 초입니다. 비 대화식 연결은 여전히 ​​최대 8 시간입니다.

  • "wait_timeout"변수의 값을 변경하려면 다음을 수행하십시오.
SET 세션 wait_timeout = 600;
쿼리 OK, 영향을받는 0 개의 행 (0.00 초)

수면 연결이 여전히 mysql 또는 MariaDB를 수면 상태로 유지하는 경우 10 분 후에 해당 연결이 끊어집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.