How to reduce ratio of user time to sys time for Rails 3 commands in Linux
I'm currently running Rails 3 on Ubuntu Linux and I'm getting what seems like really long response times for simple commands. For instance if I call db:rollback to drops a tiny table of 4 columns and 0 rows takes ~30 seconds.
paul@paul-laptop:~/rails_projects/foglift$ time rake db:rollback
(in /home/paul/rails_projects/foglift)
== CreateResults: reverting ==================================================
-- drop_table(:results)
-> 0.0013s
== CreateResults: reverted (0.0014s) =========================================
real 0m27.946s
user 0m26.570s
sys 0m1.284s
The high ratio of User time开发者_开发知识库 to Sys time is what's bothering me. Is there away to diagnose or troubleshoot this?
Any help would be most appreciated.
Thanks! Paul
You really won't be able to change this very much. This is a result of using an interpreted language and a powerful/flexible framework for web development.
When you run the command the ruby interpreter has to be loaded along with the rails environment and your application before it can run the rollback. It is similar to starting up the Rails server and then running the rollback.
This may be painful when building, but there are advantages as well. Your migrations can contain logic utilizing classes from your app to make the right decisions of how to execute the migrations. Long term maintainability is by far the greater good here.
Also, DB models usually don't change frequently, the power is more important than super speed.
精彩评论