【问题标题】:OpenJPA Configuration in WAS 7.0.0.25WAS 7.0.0.25 中的 OpenJPA 配置
【发布时间】:2014-11-18 12:34:31
【问题描述】:

我正在为我的 WAS 7.0.0.25 服务器查看 Open JPA 的性能优化。我从 WAS 控制台启用了 OpenJPA 跟踪,以了解哪些属性用于缓存。

我的persistance.xml 中没有openjpa.= 类型条目。但我可以在 trace.log 中看到如下条目:

openjpa.IgnoreChanges: false
openjpa.FlushBeforeQueries: 0
openjpa.ConnectionRetainMode: 0

但我找不到设置这些属性的配置,以便我可以使用它们。

谁能指导我在哪里可以找到这些来自 WAS 7 提供的 Open JPA 的值?

【问题讨论】:

    标签: java performance jpa websphere openjpa


    【解决方案1】:

    根据文档,您应该将此行添加到您的 persistence.xml

    <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/> 
    

    http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/ref_guide_logging_openjpa.html


    添加

    如果您在 persistence.xml 中添加这些键,则可能会覆盖默认值。

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0"
        xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
        <persistence-unit name="...">
    
            <properties>
                <property name="openjpa.jdbc.DBDictionary" value="oracle" />
                <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
                <property name="openjpa.AutoDetach" value="close" />
                <property name="openjpa.DetachState" value="loaded" />
                <property name="openjpa.DataCache" value="false" />
                <property name="openjpa.Optimistic" value="true" />
                <property name="openjpa.Multithreaded" value="true" />
                <property name="openjpa.TransactionMode" value="managed" />
                <property name="openjpa.ConnectionFactoryMode" value="managed" />
                <property name="openjpa.NontransactionalRead" value="true" />
                <property name="openjpa.RestoreState" value="all" />
                <property name="openjpa.ManagedRuntime" value="auto" />
            </properties>
        </persistence-unit>
    
    
    </persistence>
    

    【讨论】:

    • 感谢 edubriguenti。但我需要修改一些属性。我在哪里可以为 WAS 提供的默认 OpenJPA 执行此操作?
    • 仅供参考——我绝不建议将 openjpa.Multithreaded 设置为 true。该功能有缺陷(充其量)并且可能导致死锁。
    • 感谢@Rick 的建议。
    【解决方案2】:

    Xhings -

    如果您正在寻找默认配置值,您应该首先查看user manual。也就是说,我建议(从性能角度)更改的唯一属性是openjpa.ConnectionRetainMode。将该属性设置为 always 已显示出一些性能影响。

    【讨论】:

    • 谢谢瑞克。我担心的问题是 HeapDumps 中 Open JPA 的大量内存占用。由于持久性,将近 60% 的堆被使用。我想检查是否通过 OpenJPA 配置和代码正确管理持久性。如果您对沉重的内存占用有任何意见,请提出建议。
    • 只是补充一点,由于 openJPA,此堆使用率达到 90%,尽管没有创建 OOM 堆转储,但应用程序和服务器在负载测试期间变得无响应。我们有 2 Gigs (Min = Max) 分配给广泛使用 Open JPA 的 JVM,我们还为 12 Gig 的 RAM 将交换空间增加到 4 gigs。
    • 我建议进行线程/堆转储并查看发生了什么,而不是盲目地设置属性。
    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 2017-03-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多