休止状態フレームワークを使用してエンタープライズ アプリケーションを開発しました。ユーザー数が急増すると (ユーザー数が 200 を超えると) アプリケーションがハングします。次の方法を試しましたが、問題は解決しません。
1) C3PO 接続プーリング (以前は接続プーリングは使用されていません)
2) 休止状態の接続プール サイズを 300 に増やしました (値 100 より前)。
3) getCurrentSession メソッドを openSession に変更
hibernate.cfg.xml ファイルには connection.pool_size=300があります
ほとんどのアプリケーション クエリは、このメソッドを使用して呼び出されます -
@オーバーライド
public List getLovServiceSqlParam(String query, Object[] obj) {
// TODO Auto-generated method stub
Session session = null;
if (this.getHibernateTemplate() != null && query != null
&& query.length() > 0) {
try
{
session = this.getHibernateTemplate().getSessionFactory().openSession();
SQLQuery query1 = session.createSQLQuery(query);
for(int i=0;i<obj.length;i++)
{
query1.setParameter(i, obj[i]);
}
result = query1.list();
session.close();
}
catch (DataAccessException e) {
e.printStackTrace();
throw e;
}
finally
{
if (session != null && session.isOpen()) {
session.close();
}
}
}
return result;
}