簡體   English   中英

Rails 5在Windows上啟動非常慢

[英]Rails 5 very slow startup on Windows

我在筆記本電腦上安裝了RoR 5

  • Windows 10
  • SSD
  • 4gb ram
  • i5 5thgen

我開始研究一個項目,我想在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嗎? 有小費嗎?

我也在我的主機上測試過

  • 16GB低延遲內存
  • SSD
  • AMD FX8350

相同的慢響應,但比筆記本電腦快一點!

另外奇怪的是,如果我並排運行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后更新

當您嘗試安裝ruby 2.3時會出現問題

  • 關於https://rubygems.org的 SSL錯誤(你必須去http://)
  • sqlite3錯誤1(rakefile中的路徑)
  • 修復錯誤1后的sqlite3,錯誤2顯示有關sqlite3適配器的錯誤。

找不到關於錯誤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方法是不行的。

https://desktop.github.com

我以前忘記提到這個,你也可以嘗試RailsInstaller http://railsinstaller.org /它是由EngineYard的人們為你設置一個完整的rails env。 不幸的是它似乎沒有活躍的Dev:/(一個加號,沒有身體報告速度作為他們的github問題FWIW的問題)

是的,我知道這令人沮喪。

僅供參考,當我以前做Windows Dev時,我個人最終安裝了虛擬機並在那里安裝了Ubuntu,這對本地開發工作正常但是“安裝一個虛擬機”並不是你想要的答案,這是大多數人這些其他選擇存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM