在ruby中启动时运行高cpu的播放启动进程
我在玩!Ubuntu上的2.1.1(使用Java 1.7.0_45和Scala 2.10.0) 它直接命中了100%,我猜这和stdout/stdin/stderr或类似的东西有关,但我不确定 然后,在使用该工具时,我在应用程序日志中得到了两分钟的等待:在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
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周期中的使用情况?应该给你一个指向可能出错的地方的指针。