나는 매일 수백만 건의 호출을 처리하는 알고리즘을 실행하는 웹 서비스를 실행 중이며 일부 백그라운드 처리도 실행합니다. "MySQL 상자에 연결 시도가 너무 많습니다."라는 오류 메시지가 몇 초 동안 표시되지만, 이는 트래픽이 많거나 무엇이든 넣을 수있는 것이 아닙니다.MySQL/PHP에서 "너무 많은 연결"오류의 근본 원인을 찾는 방법
특정 시간에 서버가 CPU와 메모리 측면에서 너무로드되지 않고 2-3 개의 연결 (스레드)이 열려 있고 모든 것이 원활하게 작동한다는 것 이외에는 병목 현상이 발생합니다. (나는 Zabbix를 사용합니다.
) 모니터링을 추적하는 방법?
프로덕션 이외의 컴퓨터에서 문제를 재현 할 수 있습니까? 적합한 하드웨어 상자와 생산로드를 시뮬레이션 할 수있는 드라이버 시스템을 갖춘 스트레스 테스트 환경을 갖추고 있습니까? 그렇지 않은 경우 가능한 한 빨리 하나를 얻으십시오. 그렇지 않으면 프로덕션 환경에서 디버깅을 시도해야합니다. 일반 쿼리 로그를 켜는 것과 같이 위험이 높은 작업을 수행해야합니다. – MarkR
업데이트 - 너무 많은 연결 문제가 발생하는 동안 SHOW PROCESSLIST를 성공적으로 실행했습니다. 내가 얻는 것은 총 151 개의 쿼리 목록 (내 num 연결은 150로 설정 됨). 그 중 2 명은 내 PC (쇼 프로세스 목록) 나머지는 374-395의 시간 값을 가진 쿼리 명령입니다. 상태가 FULLTEXT 인 사람 이외에는 LOCKED입니다. 3 개의 쿼리가 모두 UPDATE이고 나머지는 SELECT입니다. 이 잠김 현상의 원인을 어떻게 알 수 있습니까? – Nir
문제의 원인을 밝히기는 어렵지만, 시스템을 호깅하는 쿼리라고 확신합니다. 그들 가운데 어느 것이 가장 오랫동안 사형을 받았는지 그리고 많은 것을 반복하는 것처럼 보이는 것을보십시오. 그 후에 올바른 인덱스를 만들고 쿼리를 최적화하는 것만으로도 여기에 아무도 스키마와 쿼리를 보지 않고 무엇을 해야할지 정확히 말할 수 없습니다. – matei