กำลังมองหาคำแนะนำ - ฉันได้อ่านอีกสองหัวข้อเกี่ยวกับเรื่องนี้
ในไฟล์ 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 วินาที ไม่มี [size:100;busy:100;idle:0;lastwait: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=false
#spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=ตรวจสอบความถูกต้อง
spring.jpa.properties.hibernate.show_sql=false
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