Ищу совет - я прочитал две другие темы об этом
в моем файле server.xml у меня есть два места, где maxThreads определены в двух местах:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="100" minSpareThreads="4"/>
И
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="100" SSLEnabled="true" scheme="https" secure="true" connectionTimeout="600000" keystoreFile="/usr/local/tomcat/conf/keystore.p12" keystorePass="mypassword" clientAuth="false" sslProtocol="TLS" />
Ошибка, с которой мы часто сталкиваемся на нашем сервере:
«Тайм-аут: пул пуст. Не удалось получить соединение в течение 30 секунд, нет доступных [размер: 100; занят: 100; бездействует: 0; последнее ожидание: 30000]»
перед фатальным остановом системы (машина перезагружается и снова запускается — на кластере AWS ECS)
Когда я увеличиваю значение maxThreads до 300 во втором из перечисленных здесь экземпляров, мы получаем то же сообщение об ошибке, поэтому я не уверен, что размер соединения вообще увеличился. Поведение системы другое (машина не перезагружается), но тогда пользователи не могут подключиться - в конечном итоге требуется ручная перезагрузка.
Как добиться большего количества подключений к системе или поддерживать максимально высокий уровень подключения?
В других сообщениях на эту тему некоторые предполагают, что уменьшение maxThreads также (при условии, что они выполняются быстро) может повысить производительность.
ОБНОВИТЬ:
в моем файле свойств приложения у меня были следующие настройки:
spring.datasource.url=jdbc:postgresql://db####
spring.datasource.username=#####
spring.datasource.password=######
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=60
spring.datasource.tomcat.test-on-borrow=true
spring.jpa.show-sql = ложь
#spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=проверить
spring.jpa.properties.hibernate.show_sql = ложь
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.connection.provider_class=org.hibernate.c3p0.internal.C3P0ConnectionProvider
spring.jpa.properties.hibernate.c3p0.min_size=1
spring.jpa.properties.hibernate.c3p0.max_size=30
spring.jpa.properties.hibernate.c3p0.timeout=120
spring.jpa.properties.hibernate.c3p0.max_statements=20