标签: dspace

什么会导致Tomcat(v8)具有周期性规律性的CPU峰值

在Windows 2012 RT(x64)TEST服务器上,我们正在运行Tomcat 8安装,并且CPU使用率在达到峰值使用率的常规性方面令人不安.

安装我们的应用程序后,但任何人访问它之前,会发生这种情况.我已经访问了几个页面并测试了一些功能,但没有任何可以创建我所知道的这种行为.

服务器上有2个虚拟处理器,每隔约20秒,CPU使用率将在一个处理Tomcat的处理器上达到100%,持续10秒(给予或接受).见下文:

周期性峰值图

模式的规律性向我表明在Tomcat 8的安装或设置中有些不正确.

我已经安装了YourKit Java Profiler(通过SO推荐),我希望能够解释导致这些峰值的原因,但是还没有看到线程启动的原因 - 至少部分是因为我的新意到YourKit.我确实将它附加到Tomcat启动文件,它似乎跟踪行为.

catalina日志在加标事件期间是静默的(就像我的应用程序日志一样)但是当我停止Tomcat时,有一些关于ThreadLocals的消息开始但无法删除然后:"...线程将随着时间的推移而更新尽量避免可能的内存泄漏."

我让服务器在周末运行,模式一直持续到今天,所以我不认为我的症状会消失.无论启动什么,现在只需每20秒启动一次这些线程(和/或YourKit)消耗系统上所有可用的RAM .

什么是可能的方法来隔离这种异常的Tomcat活动,并希望停止或纠正它?

YourKit中有许多图表和标签,因此我不愿列出可能有用的所有内容.感谢您帮助我缩小了YourKit(或其他工具)可以为我提供的问题.

来自catalina日志的关于启动的信息:

Apache Tomcat/8.0.23
Architecture: amd64
Java Home: C:\Program Files\Java\jre1.8.0_65
CATALINA_BASE: C:\Program Files\Apache Software Foundation\Tomcat 8.0
Run Code Online (Sandbox Code Playgroud)

2015-12-08更新

在Gergely的请求下,该应用程序是DSpace的本地安装.它是一个带有Postgres SQL数据库后端的Java应用程序.我们从这里定制一个开源版本:http://www.dspace.org/introducing.我不确定还有什么可以提供帮助,我认为堆栈跟踪更多地揭示了什么是(并且没有)运行 - 见下文.

通过启用YourKit中的Stack Telemetry,可以通过将光标拖过一段Profiler历史记录来获得"CPU Estimation".对我来说,看起来所有CPU正在做的就是空转.Java文件是否在Tomcat例程下面如图?他们没有像DSpace那样打击我(尽管我不是专家)也不会看起来在CPU达到峰值时正在完成任何工作.

值得注意的是:在静默期间堆栈跟踪是相同的 - 唯一的区别是CPU时间(ms)是数百而不是数千毫秒.为了比下面的更直接的比较,hump在Thread.run()中表示~8,000ms,而静默期消耗~125ms的cpu时间(尽管覆盖大约相同的时间量).

最后,当请求应用程序的页面时,后续的代码分支出现在调用树中.如果它发生在尖峰期间,则可能只需要400毫秒的CPU时间来加载整页.出现的代码分支是ApplicationFilterChain.java,作为整个单独的分支以及PooledExecutor $ Worker.run() - 在层次结构中的java.lang.Thread.run()下面.

当试图解释堆栈跟踪时:EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()负责吗?

处理器峰值没有已知的相关活动

CPU分析

2015-12-08更新#2

YourKit预先配置为隐藏某些java类名称模式,这些模式模糊了java.lang.Thread上的向下钻取.清除过滤器启用以下屏幕截图,显示峰值事件期间的绝大多数处理时间是通过调用以下3种方法:

  • java.io.WinNTFileSystem.canonicalize0
  • java.io.WinNTFileSystem.getBooleanAttributes(inFile.exists())
  • StardardRoot.java

我很抱歉还不了解Tomcat或DSpace以了解谁正在启动这些任务.(如果重要的是第一行正上方的那条线java.lang.Thread.run()然后 …

performance tomcat yourkit dspace windows2012

9
推荐指数
1
解决办法
9535
查看次数

在DSpace中,如何使用IntelliJ IDEA调试实时代码?

我目前的开发过程是更改Java代码,mvn包,ant更新,重启我的tomcat服务器.我真的希望能够添加断点,并实时调试我的DSpace实例.我最近遇到了一个关于oceanlink代码的问题,想要调试,但不得不求助于println/log信息来查看变量.

我熟悉维基页面:https://wiki.duraspace.org/display/DSPACE/IDE+Integration+-+DSpace+and+IDEA

我只是想知道是否有更多关于这个主题的浓缩,最近的指导.

dspace

6
推荐指数
1
解决办法
627
查看次数

如何使用pdfbox连接两个pdf并保留书签和pdf/a合规性?

码:

    /**
 * Creates a
 * cited document from the given bitstream of the given item. This
 * requires that bitstream is contained in item.
 * <p>
 * The Process for adding a cover page is as follows:
 * <ol>
 *  <li> Load source file into PdfReader and create a
 *     Document to put our cover page into.</li>
 *  <li> Create cover page and add content to it.</li>
 *  <li> Concatenate the coverpage and the source
 *     document.</li>
 * </p> …
Run Code Online (Sandbox Code Playgroud)

java pdf pdfa dspace pdfbox

5
推荐指数
0
解决办法
659
查看次数

规范化分片的SOLR记录:_version_问题

作为我的DSpace实例的一部分,我有一个包含1200万使用情况统计记录的SOLR存储库.某些记录已通过多个SOLR升级进行迁移,并且不符合当前架构.其中500万条记录缺少我的架构中指定的唯一ID字段.

DSpace系统提供了一种机制,可使用以下代码将较旧的使用情况统计信息记录分片到单独的solr分片中.

DSPACE SHARD LOGIC:

        for (File tempCsv : filesToUpload) {
            //Upload the data in the csv files to our new solr core
            ContentStreamUpdateRequest contentStreamUpdateRequest = new ContentStreamUpdateRequest("/update/csv");
            contentStreamUpdateRequest.setParam("stream.contentType", "text/plain;charset=utf-8");
            contentStreamUpdateRequest.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
            contentStreamUpdateRequest.addFile(tempCsv, "text/plain;charset=utf-8");

            statisticsYearServer.request(contentStreamUpdateRequest);
        }
        statisticsYearServer.commit(true, true);
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此过程时,我收到了一条错误消息,指出我的每条记录都缺少唯一的id字段,并且该过程丢弃了500万条记录.

我试图替换这500万条记录,以强制在每条记录上创建唯一的id字段.这是我正在运行以触发该更新的代码.查询myQuery迭代数千条记录的批次.

我的录音修复程序:

    ArrayList<SolrInputDocument> idocs = new ArrayList<SolrInputDocument>();
    SolrQuery sq = new SolrQuery();
    sq.setQuery(myQuery);
    sq.setRows(MAX);
    sq.setSort("time", ORDER.asc);

    QueryResponse resp  = server.query(sq);
    SolrDocumentList list = resp.getResults();

    if (list.size() > 0) {
        for(int i=0; i<list.size(); i++) {
            SolrDocument doc = list.get(i);
            SolrInputDocument idoc …
Run Code Online (Sandbox Code Playgroud)

solr dspace

5
推荐指数
1
解决办法
838
查看次数

Dspace XMLUI 配置

我安装并正确配置了 dspace(我认为),当我使用 JSPUI 界面时,所有操作都可以完美运行。但是当我尝试使用 XMLUI 接口时,Tomcat 会返回以下异常。

老实说,我不知道发生了什么。如果你能帮助我。非常感谢!

我的服务器日志:

https://mega.nz/#F!M4VFBRrC!CFA_gT0YREm589CFELGHmw

Java堆栈跟踪:

java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at java.lang.String.charAt(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoaderBase.filter(WebappClassLoaderBase.java:2756)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)
    at org.mozilla.javascript.Kit.classOrNull(Kit.java:88)
    at org.mozilla.javascript.NativeJavaPackage.getPkgProperty(NativeJavaPackage.java:154)
    at org.mozilla.javascript.NativeJavaPackage.get(NativeJavaPackage.java:105)
    at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:1544)
    at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1375)
    at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1364)
    at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:2965)
    at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2394)
    at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:162)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
    at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:173)
    at org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.setupContext(FOM_JavaScriptInterpreter.java:465)
    at org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.callFunction(FOM_JavaScriptInterpreter.java:585)
    at org.apache.cocoon.components.treeprocessor.sitemap.CallFunctionNode.invoke(CallFunctionNode.java:109)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:186)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:260)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:107)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
    at …
Run Code Online (Sandbox Code Playgroud)

java tomcat dspace

5
推荐指数
1
解决办法
965
查看次数

如果我在文件中有翻译,如何在DSpace中翻译或替换主题词

如果语言被切换,我想翻译我正在维护的DSPace实例中item-view.xsl中显示的主题(MeSH)术语.以前我使用下面的代码(我在XSLUtils.java课堂上添加了这个代码)来查找Babelmesh网站并动态翻译它.

    public static String lookupBabelMeSH(String term, String lang) {
    try {
        URLConnection babelMeshConn = (new URL("https://babelmesh.nlm.nih.gov/mesh_trans.php?oterm=" + URLEncoder.encode(term, "UTF-8") + "&in=ENG&out=" + lang)).openConnection();
        babelMeshConn.setConnectTimeout(5000);
        babelMeshConn.setReadTimeout(5000);

        BufferedReader in = new BufferedReader(new InputStreamReader(babelMeshConn.getInputStream(), "UTF-8"));
        String value = in.readLine();
        in.close();

        if (!StringUtils.isEmpty(value)) {
            return value;
        }
    } catch (MalformedURLException mue) {

    } catch (IOException ioe) {

    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

然后我就这样使用它item-view.xsl:

  <xsl:choose>
    <xsl:when test="$active-locale!='en'">
      <xsl:variable name="current-locale">
        <xsl:if test="$active-locale='fr'">
          <xsl:text>FRE</xsl:text>
        </xsl:if>
        <xsl:if test="$active-locale='zh'">
          <xsl:text>CHN</xsl:text>
        </xsl:if>
      </xsl:variable>
      <xsl:variable name="translation">
        <xsl:value-of select="util:lookupBabelMeSH(node(),$current-locale)"/> …
Run Code Online (Sandbox Code Playgroud)

java xslt-1.0 dspace

5
推荐指数
1
解决办法
323
查看次数

使用 REST 将 DSPace 中的项目设为私有

我需要在存储库中将大约 4000 个项目设为私有。有没有办法使用 REST API 来做到这一点?

对于我拥有的项目数量来说,在 XMLUI 中编辑此项目并设为私有似乎不太可行。

dspace

5
推荐指数
0
解决办法
212
查看次数

如何在我的DSpace中添加语言?

我想在我的DSpace中添加"阿拉伯语".

我配置这个文件:

[dspace]/config/dspace.cfg  
Run Code Online (Sandbox Code Playgroud)

用这一行:

webui.supported.locales = en, de, ar
Run Code Online (Sandbox Code Playgroud)

然后我构建Dspace并重新启动Tomcat.

但我找不到这个文件:

 "Messages.properties" at   
[dspace-src]/dspace/modules/jspui/src/main/resources/Messages.properties  
Run Code Online (Sandbox Code Playgroud)

以及德语如何在我无法找到的DSpace上出现

"Messages_de.properties" at  
[dspace-src]/dspace/modules/jspui/src/main/resources/Messages_de.properties 
Run Code Online (Sandbox Code Playgroud)

用阿拉伯语自定义我的DSpace会有其他奇怪的问题吗?

dspace

4
推荐指数
1
解决办法
4552
查看次数

如何自定义DSpace主题?

我在我的电脑上安装了DSpace.我使用Mirage作为默认主题,现在我想为我的DSpace自定义它.我想更改CSS文件(重新设计),但我不知道正确设置自定义的步骤.我可以在[dspace]/webapps/themes/Mirage/lib/css/文件夹中编辑我的CSS文件,但在重建DSpace后,它们将被删除.对已安装的主题进行自定义的正确方法是什么?我应该编辑CSS文件并将它们添加到[dspace-source]/dspace/modules/src/main/文件夹然后重建我的webapps?我已经阅读了有关该文件的官方文档,但我无法找到我的问题的正确答案.

css customization dspace

4
推荐指数
1
解决办法
2417
查看次数

Python,lxml - 获取兄弟标签(大)孩子的文本

我有一个XML解析,这对我来说真的很棘手.

<bundles>
  <bundle>
    <bitstreams>
      <bitstream>
        <id>1234</id>
      </bitstream>
    </bitstream>
    <name>FOO</name>
  </bundle>
  <bundle> ... </bundle>
</bundles>
Run Code Online (Sandbox Code Playgroud)

我想通过这个XML迭代并找到所有的ID的内部数值比特流名称元素的值是"富".我对任何未命名为"FOO"的捆绑包都不感兴趣,捆绑包中可能有任意数量的捆绑包和任意数量的比特流.

我一直在使用tree.findall('./bundle/name')找到FOO捆绑包但这只返回一个我无法单步执行id值的列表:

for node in tree.findall('./bundle/name'):
if node.text == 'FOO':
 id_values = tree.findall('./bundle/bitstreams/bitstream/id')
 for value in id_values:
     print value.text
Run Code Online (Sandbox Code Playgroud)

这将打印出所有 id值,而不是捆绑'FOO'的值.

我怎样才能通过此树遍历,找到名称 FOO,借此捆绑节点,收集ID嵌套在它的值?这里的XPath参数不正确吗?

我正在使用Python进行lxml绑定 - 但我认为任何XML解析器都没问题; 这些不是大型的XML树.

python lxml siblings xml-parsing dspace

3
推荐指数
1
解决办法
2733
查看次数