17 连接池并发与数据库故障:实验卡(2026-10-04) 真实 deploy/server.xml 未显式设 maxPoolSize/connectionTimeout;任何“池=2,等=5s”均是临时隔离配置的待测输入,不能回写工程配置、不能预先报超时值。数据库必须是可以自行停启的独立 PostgreSQL 16.15;Open Liberty 26.0.0.5 仅监听回环地址。为每次运行记录当前生效的脱敏 server.xml 与 WAR SHA。 现有正常入口(foundation 的 datasource 文件曾记录一次 200 connected): cd examples/javaee-enterprise JAVAEE_PORT=9085 bash scenarios/05-datasource.sh curl -sS -i --max-time 10 http://127.0.0.1:9085/procurement/api/db-check 预期脚本退出 0、HTTP 200、connected;没有池借用等待或归还计数。失败前后每次都重新保存命令、退出码与响应。 数据库断连与恢复(NOT_RUN):只在专用数据库管理权限下,先发正常请求、记录 pg_stat_activity 和 Liberty 日志窗口;由操作者使用自己该实例的数据库停启命令关闭该专用服务,原样重跑上述 05 脚本,保存真实失败阶段/异常/退出码;启动数据库后同脚本复测到 connected,并独立读业务库核对最终行。具体停启命令因本机实例而异,不虚构 systemctl 命令,也不预填 HTTP 状态或自动重试次数。 小池耗尽(NOT_RUN):未来在隔离 server.xml 副本配置 connectionManagerRef,固定上限与借用等待时间,增加有界持有连接的测试专用受管入口与屏障,使并发借用多于上限;采集借出、空闲、等待数、SQL 执行/事务退出时间与超时链,再撤去故障重测。现有一次只读请求或顺序跑十次均不能触发可证明的耗尽;当前无实验端点和原始指标。 预算判据:实例池数与各自 maxPoolSize 的上限合计必须给迁移、监控、管理员与数据库保留连接留余量;没有 PostgreSQL 实际版本、max_connections/保留值、池指标与真实并发请求时线,不能填写生产容量 PASS。