Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate web应用程序_Hibernate_Hibernate Postgresql - Fatal编程技术网

Hibernate web应用程序

Hibernate web应用程序,hibernate,hibernate-postgresql,Hibernate,Hibernate Postgresql,我使用hibernate框架开发了企业应用程序。当用户数量激增时(当用户数超过200时),应用程序会挂起。我尝试了以下方法,但问题仍然存在 1) C3PO连接池(以前未使用连接池) 2) 将hibernate连接池大小增加到300(值100之前) 3) 将getCurrentSession方法更改为openSession hibernate.cfg.xml文件具有 连接。池大小=300 大多数应用程序查询都是使用此方法调用的- @凌驾 公共列表getLovServiceSqlParam(字符串查

我使用hibernate框架开发了企业应用程序。当用户数量激增时(当用户数超过200时),应用程序会挂起。我尝试了以下方法,但问题仍然存在

1) C3PO连接池(以前未使用连接池)

2) 将hibernate连接池大小增加到300(值100之前)

3) 将getCurrentSession方法更改为openSession

hibernate.cfg.xml文件具有 连接。池大小=300

大多数应用程序查询都是使用此方法调用的-

@凌驾

公共列表getLovServiceSqlParam(字符串查询,对象[]obj){

//TODO自动生成的方法存根
会话=空;
如果(this.getHibernateTemplate()!=null&&query!=null
&&query.length()>0){
尝试
{
会话=this.getHibernateTemplate().getSessionFactory().openSession();
SQLQuery query1=session.createSQLQuery(查询);

对于(int i=0;i这种情况不是通过查看代码来解决的,而是通过在加载的应用程序上运行cpu采样工具(如jvisualvm,免费的,包含在oracle JVM包中,请看:
$JAVA_HOME/bin/jvisualvm
)来解决的

看看你的UI线程大部分时间都花在哪里,然后一个接一个地优化这些部分

这可能是由于不再连接到数据库,或者由于某些查询上的争用,或者完全出乎意料的其他原因。只有在运行cpu采样分析后,您才会知道

为此,

  • 将jvisualvm连接到负载下的应用程序(可能不容易获得显示与生产环境相同行为的环境,但更难获得对生产环境的jvisualvm访问,具体取决于您工作的it规则)
  • 切换到
    Sampler
    选项卡,然后单击
    CPU
    按钮
  • 在你的UI上触发一个动作(通常这个动作会有意外的行为(太慢?)
  • 完成后,单击快照按钮
  • 从那里找到你的UI线程(可能不容易),然后看看它在哪里花费了大部分时间
  • 优化这部分

这种情况不是通过查看代码来解决的,而是通过在加载的应用程序上运行cpu采样工具(如jvisualvm,免费,包含在oracle JVM包中,请看:
$JAVA\u HOME/bin/jvisualvm
)来解决的

看看你的UI线程大部分时间都花在哪里,然后一个接一个地优化这些部分

这可能是由于不再连接到数据库,或者由于某些查询上的争用,或者完全出乎意料的其他原因。只有在运行cpu采样分析后,您才会知道

为此,

  • 将jvisualvm连接到负载下的应用程序(可能不容易获得显示与生产环境相同行为的环境,但更难获得对生产环境的jvisualvm访问,具体取决于您工作的it规则)
  • 切换到
    Sampler
    选项卡,然后单击
    CPU
    按钮
  • 在你的UI上触发一个动作(通常这个动作会有意外的行为(太慢?)
  • 完成后,单击快照按钮
  • 从那里找到你的UI线程(可能不容易),然后看看它在哪里花费了大部分时间
  • 优化这部分

我尝试过这样做,但线程分析太复杂。在应用程序挂起的情况下,根本不会从action类调用getNamedQuery方法。getNamedQuery方法之前的sysout将打印在日志中,但方法中的其他sysout根本不会打印,即getNamedQuery不会执行,因此结果不会被渲染ied正在这样做,但线程分析太复杂。在应用程序挂起的情况下,根本不会从action类调用getNamedQuery方法。getNamedQuery方法之前的sysout正在日志中打印,但该方法内部的其他sysout根本不会打印,即getNamedQuery不会执行,因此不会呈现结果
    // 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;
}