Programing

MySQL 명령에서 PROCESSLIST 표시 : sleep

lottogame 2020. 10. 25. 11:30
반응형

MySQL 명령에서 PROCESSLIST 표시 : sleep


MySQL 데이터베이스에서 SHOW PROCESSLIST를 실행하면 다음과 같은 출력이 나타납니다.

mysql> show full processlist;

+--------+------+-----------+--------+---------+-------+-------+-----------------------+
| Id     | User | Host      | db     | Command | Time  | State | Info                  |
+--------+------+-----------+-------+---------+-------+-------+-----------------------+
| 411665 | root | localhost | somedb | Sleep   | 11388 |       | NULL                  | 
| 412109 | root | localhost | somedb | Query   |     0 | NULL  | show full processlist | 
+--------+------+-----------+-------+---------+-------+-------+------------------------+

명령하에있는 "Sleep"프로세스를 알고 싶습니다. 무슨 뜻이에요? 왜 오랫동안 실행되고 NULL을 표시합니까? 그것은 데이터베이스를 느리게 만들고 프로세스를 종료하면 정상적으로 작동합니다. 제발 도와주세요.


연결을 기다리는 쿼리가 아닙니다. 타임 아웃이 종료되기를 기다리는 연결 포인터입니다.

성능에 영향을 미치지 않습니다. 모든 연결에서 사용하는 유일한 것은 몇 바이트입니다.

정말 최악의 경우 : 풀의 하나의 연결을 사용하고 있습니다. 콘솔 클라이언트를 통해 여러 번 연결하고 연결을 닫지 않고 클라이언트를 닫으면 모든 연결을 다 사용하고 시간 초과가 다시 연결될 수있을 때까지 기다려야 할 수 있습니다 ...하지만 가능성은 거의 없습니다. :-)

참조 MySQL의 Proccesslist는 "너무 많은 연결"로 이어지는 "수면"항목 가득? https://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep 더 많은 정보를 얻을 수 있습니다.


"절전"상태 연결은 대부분 데이터베이스에 대한 지속적인 연결을 유지하는 코드에 의해 생성됩니다.

여기에는 응용 프로그램 프레임 워크에서 만든 연결 풀이나 클라이언트 측 데이터베이스 관리 도구가 포함될 수 있습니다.

위에서 언급했듯이 이러한 연결에 대해 걱정할 이유가 없습니다 ... 물론 연결이 어디에서 오는지 알지 못하는 경우가 있습니다.

(주의 : 이러한 종류의 연결 목록이 많으면 동시 연결이 부족할 위험이 있습니다.)


이 답변은 https://dba.stackexchange.com/questions/1558 에서 찾았습니다 . 간단히 말해서 다음 (또는 my.cnf 내에서)을 사용하면 시간 초과 문제가 제거됩니다.

SET GLOBAL interactive_timeout = 180; SET GLOBAL wait_timeout = 180;

이렇게하면 연결이 3 분 동안 (또는 사용자가 정의한대로) 절전 상태로 유지되는 경우 연결이 종료됩니다.


수면은 스레드가 아무것도하지 않음을 의미합니다. 스레드 쿼리를 수행하기 때문에 시간이 너무 큽니다. 그러나 서버 연결을 끊지 않습니다. 기본값은 wait_timeout = 28800입니다. 따라서 값을 더 작게 설정할 수 있습니다 (예 : 10). 또한 스레드를 종료 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/12194241/show-processlist-in-mysql-command-sleep

반응형