2011-12-23 10 views
8

सरल समस्या, मेरे पास एक विरासत रेल 2.3 एप्लिकेशन है और इसे कुछ भी करने में काफी समय लगता है। rake में 25 सेकंड से अधिक समय लगता है, लेकिन ऐसा लगता है कि वास्तव में कुछ भी हो रहा है।मैं रेल एप्लिकेशन के बूटिंग को कैसे प्रोफाइल कर सकता हूं?

क्या कोई आसान तरीका है कि जब मैं ऐप लोड कर रहा हूं, तब से कुछ प्रकार का प्रोफाइलर डंप प्राप्त कर सकता हूं, यह देखने के लिए कि कौन से तरीके सबसे लंबे समय तक लेते हैं?

रेल 2.3 और 3.1 दोनों के लिए एक समाधान और भी सहायक होगा।

+0

आप किस रूबी का उपयोग कर रहे हैं? – rkb

+0

@ आरकेबी वर्तमान में आरईई है, लेकिन मैं प्रोफाइलिंग के लिए किसी अन्य संस्करण का उपयोग कर सकता हूं, क्योंकि सभी रत्न 1.9 संगत हैं। –

उत्तर

1

आप अपने आवेदन को एक प्रोफाइलर के साथ शुरू कर सकते हैं, उदाहरण के लिए ruby-prof या perftools.rb। हालांकि यह अभी भी शुरू हो रहा है, इसके खिलाफ एक HTTP क्वेरी लॉन्च करें, जो एप्लिकेशन शुरू होने के तुरंत बाद GET/kill_me मार्ग पर जाने का प्रयास करेगा। /kill_meexit पर कॉल करके आपके आवेदन को गहराई से मरने का कारण बन सकता है। नतीजतन आपको अपने स्टार्टअप का प्रोफाइल मिला है।

9

प्रोफाइल एक रेक कार्य है कि रेल वातावरण की आवश्यकता है, कुछ इस तरह:

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

end 

तो माणिक प्रोफेसर

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

यह चाहिए रेल 2.3 के साथ काम करने ही परीक्षण किया है साथ प्रोफ़ाइल यह 3.x पर है लेकिन मुझे कोई कारण नहीं दिख रहा है कि इसे क्यों काम नहीं करना चाहिए।

+2

'रेक पर्यावरण' एक ऐसा कार्य है जो केवल करता है - रेल पर्यावरण को लोड करता है। – rkb

+0

आह हाँ, आप अनुमान लगा सकते हैं कि मैं केवल रेक वातावरण चला सकता हूं, लेकिन शायद आप FooModel.all या कुछ जैसे रेक कार्य में कुछ विधियों को आजमा सकते हैं। – sunkencity

संबंधित मुद्दे

 संबंधित मुद्दे