Bad performance when viewing build results

Hi,

We are experiencing some pretty bad performance when looking at the results from builds. There is currently a build running junit tests (Tests failed: 76 (45 new), passed: 1874) and opening the overview for the build takes a minute or more (server cpu usage 100% during this time). Looking at the thread processing the request using jstack shows it is reading some file (buildLog) for a long time:

        at java.io.RandomAccessFile.read(Native Method)
        at java.io.RandomAccessFile.readInt(RandomAccessFile.java:723)
        at java.io.RandomAccessFile.readLong(RandomAccessFile.java:758)
        at jetbrains.buildServer.serverSide.buildLog.IndexFileReaderImpl.readRecord(IndexFileReaderImpl.java:19)
        at jetbrains.buildServer.serverSide.buildLog.LogMessageFacade$RawMessagesProcessor.processMessages(LogMessageFacade.java:13)
        at jetbrains.buildServer.serverSide.buildLog.LogMessageFacade$5.run(LogMessageFacade.java:0)
        at jetbrains.buildServer.serverSide.buildLog.LogMessageFacade.runExclusively(LogMessageFacade.java:117)
        - locked <0x9ac47cb0> (a java.lang.Object)
        at jetbrains.buildServer.serverSide.buildLog.LogMessageFacade.processMessages(LogMessageFacade.java:87)
        at jetbrains.buildServer.serverSide.buildLog.BuildLogImpl.processMessages(BuildLogImpl.java:19)
        at jetbrains.buildServer.serverSide.impl.query.SelectTestOutputQuery.collectMessages(SelectTestOutputQuery.java:0)
        at jetbrains.buildServer.serverSide.impl.query.SelectTestOutputQuery.getFirst(SelectTestOutputQuery.java:36)
        at jetbrains.buildServer.serverSide.impl.query.SelectTestOutputQuery.getStacktrace(SelectTestOutputQuery.java:7)
        at jetbrains.buildServer.serverSide.stat.BuildStatisticsImpl$1.process(BuildStatisticsImpl.java:3)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery.processResultSet(GenericQuery.java:6)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery.access$500(GenericQuery.java:4)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery$7.action(GenericQuery.java:5)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery$8.apply(GenericQuery.java:28)
        at jetbrains.buildServer.serverSide.db.DBFunctions.withDB(DBFunctions.java:553)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery.underPreparedStatement(GenericQuery.java:23)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery.doExecuteQuery(GenericQuery.java:9)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery.access$100(GenericQuery.java:101)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery$2.run(GenericQuery.java)
        at jetbrains.buildServer.serverSide.db.DBFacade$8.doInConnection(DBFacade.java)
        at jetbrains.buildServer.serverSide.db.DBFacade$9.doInConnection(DBFacade.java:3)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342)
        at jetbrains.buildServer.serverSide.db.DBFacade._runSql(DBFacade.java:145)
        at jetbrains.buildServer.serverSide.db.DBFacade.runSql(DBFacade.java:83)
        at jetbrains.buildServer.serverSide.impl.query.GenericQuery.execute(GenericQuery.java:11)
        at jetbrains.buildServer.serverSide.impl.query.SelectTestOutputQuery.exec(SelectTestOutputQuery.java:16)
        at jetbrains.buildServer.serverSide.stat.BuildStatisticsImpl.<init>(BuildStatisticsImpl.java:35)
        at jetbrains.buildServer.serverSide.stat.BuildStatisticsImpl.<init>(BuildStatisticsImpl.java:26)
        at jetbrains.buildServer.serverSide.stat.BuildStatisticsImpl$3.doInTransaction(BuildStatisticsImpl.java)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
        at jetbrains.buildServer.serverSide.stat.BuildStatisticsImpl.createOn(BuildStatisticsImpl.java:47)
        at jetbrains.buildServer.serverSide.impl.BaseBuild.createFullStatistics(BaseBuild.java:137)
        at jetbrains.buildServer.serverSide.impl.BaseBuild.getBuildStatistics(BaseBuild.java:145)


The build log does contain a lot of rows but not an enormous amount: The build log view says the log is 6.73MB.

We are currently running TeamCity Enterprise 5.1.1 (build 13398), has there been some improvements to this in TeamCity 6? Is there something else we can do?
1 comment
Comment actions Permalink

There were improvements in this area in 6.0. I would suggest to install TC 6.0 professional, configure there this project, run a build and check whether it works faster or not.

0

Please sign in to leave a comment.