그래서 저는 단일 코어 서버에서 MariaDB 10 데이터베이스를 실행하고 있습니다. 매우 강력하지는 않지만 요구 사항도 크지 않습니다.
그러나 한 가지 주목할 점은 목록에 htop
약 28개의 항목이 표시된다는 것입니다. 이는 하나의 프로세스에 27개의 스레드를 더한 것입니다(스레드는 기본적으로 프로세스처럼 나열되므로).mysql
htop
그러나 내 데이터베이스는 연결당 기본 스레드 1개가 아닌 8개 스레드로 제한된 스레드 풀을 사용하도록 구성되어 있고 해당 스레드를 모두 사용하지도 않기 때문에(현재는 2개입니다.) 추가로 25개가 필요하기 때문에 이것은 많은 것 같습니다. 스레드는 무엇에 사용됩니까? 이 숫자를 줄일 수 있는 방법이 있나요?
이것이 반드시 문제가 되는 것은 아니라는 것을 알고 있지만 느린 쿼리를 거의 경험하지 않으며(대부분의 쿼리가 매우 간단하기 때문에 일반적인 <1ms 대신 >0.5초) 스레드가 너무 많으면 잠재적인 원인이 될 수 있는 것 같습니다. 너무 많은 사람들이 갑자기 깨어나는 경우입니다.
이 스레드 수는 정상입니까? 이를 더 줄일 수 있는 방법이 있습니까? 아니면 이러한 추가 스레드가 중요한 작업을 수행하고 있습니까?
sudo grep thread /etc/mysql/my.cnf
thread_stack = 256K
thread_cache_size = 8
thread_handling = pool-of-threads
thread_pool_max_threads = 8
thread_pool_stall_limit = 200
답변1
이러한 스레드는 다양한 용도로 사용됩니다. 시작하고 종료를 기다리는 메인 스레드, Innodb 및 Aria의 여러 백그라운드 스레드 등이 있습니다.
연결 gdb
하고 실행하여 thread apply all bt
그들이 무엇을 하고 있는지 확인하세요. 대부분 그들은 아무 일도 하지 않고 어떤 이벤트가 일어나기를 기다리고 있을 것입니다.