実は解決せず、また再現しましたのでさらに調査したところ、
これと同じ状況でした。
https://codeday.me/jp/qa/20190201/199986.html
かといってコネクションプーリングは設定しているし・・・と思ったのですが、
Tomcat7とTomcat9で設定項目名が違っており、Tomcatのログに起動時の「警告」が出ており、「その設定値はないから、初期値が適用されます」という旨のメッセージが出ていました。
13-May-2019 15:02:00.298 警告 [main] org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory.getObjectInstance Name = xxxDataSource Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "200" for "maxActive" property, which is being ignored.
13-May-2019 15:02:00.298 警告 [main] org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory.getObjectInstance Name = xxxDataSource Property removeAbandoned is not used in DBCP2, use one or both of removeAbandonedOnBorrow or removeAbandonedOnMaintenance instead. Both have default value set to false. You have set value of "true" for "removeAbandoned" property, which is being ignored.
13-May-2019 15:02:00.298 警告 [main] org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory.getObjectInstance Name = xxxDataSource Property maxWait is not used in DBCP2 , use maxWaitMillis instead. maxWaitMillis default value is -1. You have set value of "10000" for "maxWait" property, which is being ignored.
13-May-2019 15:02:00.298 情報 [main] org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory.getObjectInstance Name = xxxDataSource Ignoring unknown property: value of "30000" for "validationInterval" property
現象が発生した箇所の時間帯ばかり見ていましたが、起動時の警告は見落としてました。
https://techblog.gmo-ap.jp/2018/12/06/tomcat7%E3%81%8B%E3%82%899%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89/
結局指定していたコネクションプーリングの値は無視され、初期値かつ
maxWaitMillis default value is -1 で無制限に待つというのがアプリが固まっていた原因のようでした。
Tomcat9で有効な設定項目にしたことで問題は解決しました。