我们的 J2EE 应用程序遇到以下错误:
java.sql.SQLException: Error in allocating a connection. Cause: In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections.
我如何知道应用程序当前使用了多少个连接以及对于高流量应用程序的最佳连接池设置应该是什么?我可以更改它吗?如何确定我应该将其设置为什么(是否是内存问题、带宽问题等)?
最佳答案
How to know how much connection the application is currently using
您没有提供足够的信息来回答这个问题。大多数应用程序服务器都会有某种 JMX 报告这样的事情。或者,根据数据库,您可以找到当前打开的连接数。
what should be the optimal connection pool settings for a heavily traffic applicaiton
比你得到的还高?
当然,以上假设您没有错误处理连接。我的意思是,如果您直接在代码中使用它们,您应该始终使用这个习惯用法:
Connection conn = null;
try {
conn = ... ; // get connection
// do stuff
} finally {
if (conn != null) try { conn.close(); } catch (Exception e) { }
}
如果您没有将连接释放回池中并等待垃圾收集器清理并释放它们,您将使用更多实际需要的连接。
关于java - 我可以更改连接的最大池大小吗?是什么决定了我应该将其设置为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/599422/