2011-12-23 26 views
8

Vấn đề đơn giản, tôi có một ứng dụng Rails 2.3 cũ và phải mất nhiều thời gian để làm bất cứ điều gì. rake mất hơn 25 giây, nhưng nó không giống như bất cứ điều gì thực sự xảy ra.Làm cách nào để hồ sơ khởi động ứng dụng Rails?

Có cách nào đơn giản để tôi có thể nhận được một số loại kết xuất hồ sơ từ thời điểm tải ứng dụng hay không, để xem phương pháp nào mất nhiều thời gian nhất?

Giải pháp cho cả Rails 2.3 và 3.1 sẽ hữu ích hơn nữa.

+0

Bạn đang sử dụng Ruby nào? – rkb

+0

@rkb Hiện tại REE, nhưng tôi có thể sử dụng bất kỳ phiên bản nào khác cho hồ sơ, vì tất cả các đá quý đều tương thích 1,9. –

Trả lời

1

Bạn có thể bắt đầu ứng dụng của mình bằng trình thu thập thông tin được nối vào, ví dụ: ruby-prof hoặc perftools.rb. Trong khi nó vẫn khởi động, khởi chạy một truy vấn HTTP với nó, nó sẽ cố gắng đi GET một tuyến đường /kill_me ngay sau khi ứng dụng bắt đầu. /kill_me có thể khiến ứng dụng của bạn chết một cách duyên dáng bằng cách gọi exit. Kết quả là bạn đã có hồ sơ về khởi nghiệp của mình.

9

hồ sơ một nhiệm vụ cào đòi hỏi môi trường đường ray, một cái gì đó như thế này:

desc "Load it" 
task :loadit => :environment do 

end 

sau đó hồ sơ với ruby-prof

ruby -Ilib -S ruby-prof -p graph_html `which rake` loadit > profile.html 

phải để làm việc với đường ray 2.3 đã chỉ thử nghiệm nó trên 3.x nhưng tôi thấy không có lý do tại sao nó không nên làm việc.

+2

'môi trường rake' là một tác vụ thực hiện điều đó - tải môi trường Rails. – rkb

+0

Ah yeah, bạn cũng có thể chạy môi trường chỉ rake tôi đoán, nhưng có lẽ bạn muốn thử một số phương pháp trong nhiệm vụ rake như FooModel.all hoặc một cái gì đó. – sunkencity

Các vấn đề liên quan