[英]Rails 5 very slow startup on Windows
我在筆記本電腦上安裝了RoR 5
我開始研究一個項目,我想在Windows下進行特定測試,我注意到了一些滯后和延遲。
所以我開始了一個新的rails應用程序,以排除我的代碼,並且延遲是相同的。
我還測試了Webrick
,延遲仍然存在。
我說的是28 seconds
!
我知道有很多相關的問題,但大多數人都談論早期版本的rails。
我想在rails中編寫這個應用程序的主要原因是在本地服務器上運行,但用戶的機器上有windows ...
C:\Users\John\railstestapp\testapp>rails s
=> Booting Puma
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
非常大的時間差距接近25秒
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGHUP not implemented, signal based logs reopening unavailable!
Puma starting in single mode...
* Version 3.6.0 (ruby 2.2.4-p230), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
正如您所期望的那樣,整個頁面都會繼續這種表現。
有任何想法嗎? 我錯過了什么嗎? 你們中的任何人在Windows上開發rails 5嗎? 有小費嗎?
我也在我的主機上測試過
相同的慢響應,但比筆記本電腦快一點!
另外奇怪的是,如果我並排運行rails控制台,我會在控制台中看到rails日志,但瀏覽器會加載很長時間!
我認為這是一個瀏覽器問題,所以為了排除這一點,我瀏覽了另一台本地機器的網站,所以我只能使用服務器而不是Windows瀏覽器......仍無濟於事,響應時間非常慢!
這是快速機器上的Puma
C:\Users\John\SimpleGym\simplegym>rails s
=> Booting Puma
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGHUP not implemented, signal based logs reopening unavailable!
Puma starting in single mode...
* Version 3.6.0 (ruby 2.2.4-p230), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
DEPRECATION WARNING: after_filter is deprecated and will be removed in Rails 5.1. Use after_action instead. (called from block (2 levels) in <module:ClassMethods> at C:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.1/lib/abstract_controller/callbacks.rb:191)
DEPRECATION WARNING: after_filter is deprecated and will be removed in Rails 5.1. Use after_action instead. (called from block (2 levels) in <module:ClassMethods> at C:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.1/lib/abstract_controller/callbacks.rb:191)
Started GET "/" for ::1 at 2016-10-03 18:59:54 +0300
ActiveRecord::SchemaMigration Load (0.0ms) SELECT "schema_migrations".* FROM "schema_migrations"
Processing by SessionsController#index as HTML
Rendering sessions/index.html.erb within layouts/application
Session Load (0.0ms) SELECT "sessions".* FROM "sessions"
Session Load (0.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
(0.0ms) SELECT COUNT(*) FROM "students" INNER JOIN "attendances" ON "students"."id" = "attendances"."student_id" WHERE "attendances"."session_id" = ? [["session_id", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
(0.0ms) SELECT COUNT(*) FROM "students" INNER JOIN "attendances" ON "students"."id" = "attendances"."student_id" WHERE "attendances"."session_id" = ? [["session_id", 2]]
Session Load (0.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Rendered sessions/index.html.erb within layouts/application (113.0ms)
Completed 200 OK in 621ms (Views: 538.5ms | ActiveRecord: 8.0ms | Solr: 0.0ms)
這是webrick在快速機器上
C:\Users\John\SimpleGym\simplegym>rails server webrick
=> Booting WEBrick
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
[2016-10-03 19:17:19] INFO WEBrick 1.3.1
[2016-10-03 19:17:19] INFO ruby 2.2.4 (2015-12-16) [i386-mingw32]
[2016-10-03 19:17:19] INFO WEBrick::HTTPServer#start: pid=9936 port=3000
DEPRECATION WARNING: after_filter is deprecated and will be removed in Rails 5.1. Use after_action instead. (called from block (2 levels) in <module:ClassMethods> at C:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.1/lib/abstract_controller/callbacks.rb:191)
DEPRECATION WARNING: after_filter is deprecated and will be removed in Rails 5.1. Use after_action instead. (called from block (2 levels) in <module:ClassMethods> at C:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.1/lib/abstract_controller/callbacks.rb:191)
Started GET "/" for ::1 at 2016-10-03 19:17:30 +0300
ActiveRecord::SchemaMigration Load (1.0ms) SELECT "schema_migrations".* FROM "schema_migrations"
Processing by SessionsController#index as HTML
Rendering sessions/index.html.erb within layouts/application
Session Load (0.0ms) SELECT "sessions".* FROM "sessions"
Session Load (0.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
(1.0ms) SELECT COUNT(*) FROM "students" INNER JOIN "attendances" ON "students"."id" = "attendances"."student_id" WHERE "attendances"."session_id" = ? [["session_id", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
(1.0ms) SELECT COUNT(*) FROM "students" INNER JOIN "attendances" ON "students"."id" = "attendances"."student_id" WHERE "attendances"."session_id" = ? [["session_id", 2]]
Session Load (0.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Session Load (0.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Session Load (1.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
(0.0ms) SELECT COUNT(*) FROM "students" INNER JOIN "attendances" ON "students"."id" = "attendances"."student_id" WHERE "attendances"."session_id" = ? [["session_id", 3]]
Session Load (0.0ms) SELECT "sessions".* FROM "sessions" ORDER BY "sessions"."id" DESC LIMIT ? [["LIMIT", 1]]
Rendered sessions/index.html.erb within layouts/application (135.0ms)
Completed 200 OK in 679ms (Views: 596.3ms | ActiveRecord: 6.0ms | Solr: 0.0ms)
[2016-10-03 19:17:51] ERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine. @ io_fillbuf - fd:8
C:/Ruby22/lib/ruby/2.2.0/webrick/httpserver.rb:80:in `eof?'
C:/Ruby22/lib/ruby/2.2.0/webrick/httpserver.rb:80:in `run'
C:/Ruby22/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
[2016-10-03 19:17:51] ERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine. @ io_fillbuf - fd:9
C:/Ruby22/lib/ruby/2.2.0/webrick/httpserver.rb:80:in `eof?'
C:/Ruby22/lib/ruby/2.2.0/webrick/httpserver.rb:80:in `run'
C:/Ruby22/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
謝謝所有人試圖幫助我,我嘗試了解決方案無濟於事..似乎rails只是不會這樣做(但是?)...
似乎沒有什么能提供良好的開發環境,我建議客戶在線使用它。
//更新
https://drive.google.com/file/d/0B_flcE49VcE1ZmVPeTFuQjUyU2s/view
我正在上傳顯示此問題的視頻。
當您嘗試安裝ruby 2.3時會出現問題
找不到關於錯誤2的解決方案並且停止嘗試...
也許生病切換到PG,只是為了看看性能是否更好並將其標記為已解決,這需要一點時間,所以當我有一些時,生病了:)
謝謝!
啟動時間較慢的一個原因可能是OpenSSL。
請參閱此處的討論:
OpenSSL在Windows上導致非常慢的Rails啟動時間
另請閱讀此答案以獲取可能的臨時解決方案:
https://stackoverflow.com/a/36629699/823617
這是一個討論問題的Rails票證:
https://github.com/rails/rails/issues/25805
根據這張票,OpenSSL問題現已在Ruby 2.3中得到修復:
https://bugs.ruby-lang.org/issues/12139
我自己並沒有看過這個,但你可能會嘗試使用Windows 10中新的內置Ubuntu。雖然如此YMMV也處於測試階段。 我會通過seein測試它是否可以首先安裝一個ruby版本管理器(如rvm.io ),好像運行你的應用程序可能會運行。
https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows
至少那時你更接近真正的posix風格終端。
如果您不在Win 10上,我總是發現默認命令行非常平均,並且不包括許多在其他平台上被視為理所當然的事情。
我發現最簡單的方法是下載Windows的github並使用他們提供的配置終端。 (好吧,他們曾經提供過一個終端,因為我已經做了一段時間)。 值得一試如果Ubuntu方法是不行的。
我以前忘記提到這個,你也可以嘗試RailsInstaller http://railsinstaller.org /它是由EngineYard的人們為你設置一個完整的rails env。 不幸的是它似乎沒有活躍的Dev:/(一個加號,沒有身體報告速度作為他們的github問題FWIW的問題)
是的,我知道這令人沮喪。
僅供參考,當我以前做Windows Dev時,我個人最終安裝了虛擬機並在那里安裝了Ubuntu,這對本地開發工作正常但是“安裝一個虛擬機”並不是你想要的答案,這是大多數人這些其他選擇存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.