Мы используем C3P0 как в Tomcat, так и за его пределами. Однако мониторинг и ведение журнала не самые лучшие, поэтому мы начнем использовать пул соединений SpringSource. Одна из лучших функций, которую я с нетерпением жду, — это точное отображение того, какие операторы SQL выполняются в любой конкретный момент времени.
Одна вещь, которую мы должны были добавить в C3P0, — это средство определения времени ожидания соединения конкретным запросом на соединение, когда пул заполнен и все соединения заняты:
public Connection getConnection() throws SQLException
{
long t = System.currentTimeMillis();
ComboPooledDataSource ds = (ComboPooledDataSource) getDelegate();
Connection conn = null;
if (ds.getNumBusyConnections() == ds.getMaxPoolSize())
{
logger.info("Pool (" + ds.getUser() + ") full, waiting for connection");
conn = ds.getConnection();
t = System.currentTimeMillis() - t;
logger.info("Connection busy wait time (" + ds.getUser() + "): " + t + "ms");
}
else
{
conn = ds.getConnection();
}
return conn;
}
Итак, что вы должны учитывать:
- поддержка и активность (как вы заметили)
- скорость
- мониторинг, регистрация и контроль производства
BoneCP выглядит быстрым (я не слышал о нем раньше), но, честно говоря, C3P0 тоже оказался для нас более чем быстрым. Когда мы тестировали несколько 4 или 5 лет назад, DBCP был ужасно медленным (похоже, они это исправили), пул Oracle был довольно медленным, а C3P0 был очень быстрым. Наш тест был очень похож на тот, что представлен на сайте BoneCP.
Я ничего не знаю об управляемости BoneCP. № 3 оказался для нас самой важной функциональностью в производственной среде.
person
Scott A
schedule
08.11.2011