在ruby中启动时运行高cpu的播放启动进程

在ruby中启动时运行高cpu的播放启动进程,ruby,scala,playframework,playframework-2.0,cpu-usage,Ruby,Scala,Playframework,Playframework 2.0,Cpu Usage,我在玩!Ubuntu上的2.1.1(使用Java 1.7.0_45和Scala 2.10.0) 它直接命中了100%,我猜这和stdout/stdin/stderr或类似的东西有关,但我不确定 然后,在使用该工具时,我在应用程序日志中得到了两分钟的等待: 2013-12-30 15:53:44,942 - [INFO] - from application in play-akka.actor.default-dispatcher-2 Formed query 'DELETE FROM Matc

我在玩!Ubuntu上的2.1.1(使用Java 1.7.0_45和Scala 2.10.0)

它直接命中了100%,我猜这和stdout/stdin/stderr或类似的东西有关,但我不确定

然后,在使用该工具时,我在应用程序日志中得到了两分钟的等待:

2013-12-30 15:53:44,942 - [INFO] - from application in play-akka.actor.default-dispatcher-2
Formed query 'DELETE FROM MatchPlayer WHERE mp_id='17';'

2013-12-30 15:55:44,735 - [INFO] - from application in play-akka.actor.default-dispatcher-2 
Asked to delete from table MatchPlayer with id 18
下面是用于启动它的ruby代码:

TestServer::start_and_wait(TestConfig::SERVER_PORT)

def TestServer.start_and_wait(port)
    start(port)
    #wait_for_start()
end

def TestServer.start(port)

    # Play blocks, so start this on a new thread
    thread = Thread.new do
    TestConfig.get_logger.info("Starting server on port #{port}")
    output = Util::Process::run_command("play \"start #{port}\"", true)

end

def Process.run_command(command, verbose = false)

    logger = TestConfig::get_logger

    if(verbose)
        logger.info("Ran command '#{command}'")
    end

    Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|

        # We don't need stdin
        stdin.close

        # Wait for process to finish and then grab stdout, stderr
        out = stdout.gets
        err = stderr.gets

        stdout.close
        stderr.close

        rc = wait_thr.value.exitstatus

        if(verbose)
            logger.info("Stdout was: \n")
            logger.info("#{out}\n")
            logger.info("Stderr was: \n")
            logger.info("#{err}\n")
            logger.info("Return code was '#{rc}'")
        end

        return ProcessResult.new(command, out, err, rc)

    end

end

您是否已验证计算机未使用交换?数据库在内存中还是在文件系统中?数据库可能包含大量数据,但没有正确的索引?是的,它在内存中。不知道你所说的“交换”是什么意思。我做了一点调查,结果发现它的性质与我之前想象的完全不同。将更新问题以反映这一点。您是否可以尝试连接visualvm并对其进行配置,以查看它在cpu周期中的使用情况?应该给你一个指向可能出错的地方的指针。