현재 테스트의 양이 많아지다 보니 커넥션 수가 늘어나고 이에 따라 연결을 거부하는 문제가 발생하는 것으로 보인다.
If clients encounter Too many connections errors when attempting to connect to the mysqld server, all available connections are in use by other clients.
The permitted number of connections is controlled by the max_connections system variable. To support more connections, set max_connections to a larger value.(출처=MySQL 공식문서)
max_connections을 변경해주어야 한다.
워크벤치에서 확인해보니 기본 디폴트 값은 151개인 것으로 보인다.
테스트 상황은 멀티 스레드를 사용하는 것도 그렇고 한번에 여러 테스트를 돌리기 때문에 이런 커넥션 고갈 문제가 발생할 것으로 보인다.
그렇다면, 프로덕션 코드에서도 이 수를 그냥 늘려버리는 게 좋을지? 의문이 들었다. 커넥션 수가 그렇게 많지는 않을 거 같기 때문이다.
이 문제는 사용되지 않는 커넥션을 정리하는 wait_timeout(기본값은 28800로 8시간이다)을 줄이거나 커넥션 수를 늘리는 방식으로 해결할 수 있다.
오히려 너무 짧게 하면 커넥션을 새로 만들면서 생기는 오버헤드가 더 커질 수 있다.
지금은 우선 테스트 코드에서 발생한 문제이기에 connection수를 늘리는 방식으로 해결하겠다.
show variables like 'max_connections';//커넥션 수 확인
SET GLOBAL max_connections= 300;