Ứng dụng rails 4.1 của tôi kết nối với một máy chủ thứ hai, không chính thông qua SSH cho một công việc phụ trợ. Do đó, khi ứng dụng đường ray khởi động lại hàng ngày, kết nối SSH cần phải được bật/tắt (thay vì máy chủ thứ hai, không phải là máy chủ chính cần phải hoạt động), nếu không ứng dụng sẽ gặp sự cố. Điều này là do tải mong muốn theo mặc định được đặt thành true trong production.rb
(config.eager_load = true
).Tác động hiệu suất của việc vô hiệu hóa eager_load trong production.rb là gì?
Tôi bị cám dỗ để phá vỡ sự phụ thuộc này bằng cách vô hiệu hóa tải háo hức, nhưng tôi không thể tìm thấy nhiều thông tin về tác động hiệu suất. Vì vậy, câu hỏi của tôi là ...
1) nếu eager_load
được đặt thành false
, điều đó sẽ đơn giản làm chậm thời gian khởi động của ứng dụng hay ứng dụng sẽ tải các tài nguyên một cách háo hức vào lần đầu tiên chúng bị tấn công?
3) Nếu eager_load
chỉ đơn giản là tắt, mức độ nào sẽ tác động đến hiệu suất khỏi ứng dụng (câu hỏi chủ quan hơn)?
2) Mô hình thực hiện kết nối SSH nằm trong thư mục app\models\legacy
. Thay vì thay đổi eager_load
thành sai, thư mục đó có thể bị loại trừ khỏi tài nguyên được tải không mong muốn không? Nếu vậy, làm thế nào? Tôi tin rằng tôi sẽ cần phải chỉnh sửa config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/}')]
nhưng không hoàn toàn chắc chắn.
production.rb:
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
Thay vì thay đổi tải mong muốn, bạn có thể không thay đổi lớp để tải/phân tích cú pháp lớp không truy cập trực tiếp ssh? Hay làm cho nó mạnh mẽ hơn? – nathanvda