"wait_timeout"이 감소했음에도 불구하고 MariaDB 프로세스 목록에서 sleep 상태의 쿼리 수가 다수 감소함
최근 PHP 앱을 PHP 7.3과 MariaDB(PHP 5.5와 MySQL 5.5 이전)가 있는 새 서버로 마이그레이션했습니다."Too many connections" 오류에 문제가 있습니다.이를 수정하기 위해서는 앱을 개선해야 할 것 같습니다.이 작업을 수행하는 동안 mariaDB 서버 컨피규레이션을 다음 값으로 변경했습니다.
max_connections = 600
connect_timeout = 5
wait_timeout = 60
interactive_timeout = 60
그리고 이러한 개선에도 불구하고, 나는 여전히 같은 문제를 안고 있다. 어떤 수면 과정은 60초가 넘는 시간 동안 여전히 존재한다.그리고 스레드 수가 증가하고 있습니다.max_coonctions 값이 될 때까지.그리고 물론 서버를 재부팅했습니다.
내 PHP 앱은 Mysqli와 영구 연결을 사용하고 있습니다.
간단하게, 영속적인 접속의 사용을 정지하고, 서버를 재기동합니다.
결국 서버 설치에서 문제가 발생한다는 것을 알게 되었습니다.평소처럼 my.cnf를 변경했는데 재부팅할 때마다 변경되는 변수도 있고 그렇지 않은 변수도 있습니다.
그리고 다른 conf 파일이 있다는 것을 깨달았습니다.이 파일은 my.cnf 파일의 변경 사항을 일부 변수에 대해 덮어씁니다.이것으로, 정상적인 파일을 변경해, 서버는 예외로서 기능합니다.
따라서 mariaDB가 conf 파일의 변경을 무시하면 다른 파일이 있는지 확인합니다.
증가시키는 것이 유리하다고 생각될 수 있지만max_connections
상황을 더 악화시킬 뿐이죠서로 얽히고 설킨 연줄이 많은 것 같네요.끝이 나지 않습니다.
보다SHOW PROCESSLIST
('시스템' 프로세스를 제외한) 가장 큰 '시간'을 가진 비수면자 중 하나가 주범일 수 있습니다.
프로세스 목록에 "sleep"이 아닌 연결이 30개 이상 표시될 경우 더 낮습니다.max_connections
타임아웃도 있어요이를 통해 시스템의 잠금을 해제할 수 있지만 문제의 근본은 파악되지 않습니다.
"원인"은 보통 다른 연결을 차단하는 하나 또는 몇 개의 장기 실행 쿼리가 원인입니다.slowlog:http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog 를 사용하여 문제의 쿼리를 검색해 보겠습니다.
언급URL : https://stackoverflow.com/questions/63580167/large-numbers-of-sleeping-queries-in-mariadb-process-list-despite-of-wait-timeo
'sourcecode' 카테고리의 다른 글
JSONObject를 사용하여 Java에서 올바른 JSONArray를 작성하는 방법 (0) | 2022.11.07 |
---|---|
javax.validation 입니다.확인예외:HV000183:'javax.el'을 로드할 수 없습니다.Expression Factory ' (0) | 2022.11.07 |
Java 8 스트림이 비어 있는지 확인하는 방법 (0) | 2022.11.06 |
SQL에서 다른 테이블의 테이블에 데이터 삽입 (0) | 2022.11.06 |
bash: pip: 명령을 찾을 수 없습니다. (0) | 2022.11.06 |