Pools are badly configured by default. 50 HTTP requests are accepted (see sonar.web.http.maxThreads) but they are backed by only 20 JDBC connections (see sonar.jdbc.maxActive). Most of HTTP requests need a JDBC connection, for example to authenticate user. Moreover two daemon processes need to open JDBC connections too (email notification + compute engine). So 18 concurrent HTTP requests lock all the JDBC connections and the 19th request fails.
For this reason I suggest to set sonar.jdbc.maxActive=50 (which is the default value of "sonar.web.http.maxThreads").