我有时会遇到RDS连接问题。所以当发生这种情况时,我的连接池中的所有连接都会变得陈旧。由于池中的陈旧连接,我面临一些高延迟问题。
使用testConnectionOnCheckout = true
,如何设置从c3p0连接池获取连接的超时时间?因为当我的应用程序尝试从池中获取连接时,首先检查池中的所有连接是否过时,然后在池耗尽时检查,然后在checkoutTimeout
间隔后获得异常。所以,如果我的结账间隔是1000毫秒,检查陈旧连接需要大约100毫秒,我在池中有30个连接,我的请求将被卡住100 * 30 + 1000 = 4000毫秒。有没有办法可以设置超时来获取连接(如果游泳池耗尽,则无关紧要)。
通过定期连接检查,我在延迟方面遇到了一个奇怪的问题。我已将JDBC读取超时设置为2000毫秒。当我调用我的API时,一些调用会在2000毫秒内抛出异常,但是一些调用大约需要15秒或更长时间,这会使我的线程忙,并使我的服务对那些不依赖于数据库的API不可用。关于这种高延迟的行为是每隔6次调用API需要更长的时间。我不确定怎么会发生这种情况。