2010-08-17 14 views
18

अद्यतन 2 यह रूबी 1.9.2 लोड फ़ाइलों के साथ एक ज्ञात बग/सुविधा है। http://twitter.com/#!/rails/status/72801149769621504रेल 3 एप सर्वर स्टार्टअप समय लंबा है

अद्यतन: यह एक सवाल के रूप में शुरू, लेकिन थोड़ा के लिए इस पर काम करने के बाद मुझे लगता है कि यह क्षम्य नहीं हो सकता है। मैंने सोचा कि अगर मैं किसी और को एक ही चीज़ देख रहा हूं तो मैं इसे पोस्ट करूंगा और सोच रहा हूं कि रेल और बंडलर के अंदर क्या चल रहा है।

क्या कोई और अपने रेल 3 ऐप्स में लंबे समय तक लोड देख रहा है? मैंने टाइमर को पर्यावरण.आरबी, application.rb, boot.rb और Railties/lib/rails /itializable.rb में रखा है। समय सेकंड में मापा जाता है और पिछली बार समय के बाद से समय बीत चुका है। उत्पादन लोड समय थोड़ा सा लगता है। आंशिक रूप से कम हार्डवेयर और eager_load से भी! (और शायद थिन बनाम Mongrel से)। ऐसा लगता है कि बंडलर लोड समय का एक बड़ा हिस्सा ले रहा है और मुझे लगता है कि इसकी उम्मीद है। मैंने देव और प्रोड में एक ऐप का परीक्षण किया, और देव में एक खाली ऐप का परीक्षण किया। मैंने यह देखने के लिए कि क्या यह पतला था, 2 ऐप सर्वरों का परीक्षण किया। मैं प्रोड में पैसेंजर के साथ समान चीजें भी देख रहा हूं (जो इसे 2.2.15 में स्पॉन्गिंग व्यवहार के अनुपयोगी बी/सी बनाता है)। मैंने एज रेल के खिलाफ परीक्षण किया और देव में प्रदर्शन थोड़ा 14.5 बनाम 14.2 बनाम खराब था। अगर मैं अपनी परीक्षण निर्भरताओं को हटा देता हूं तो यह 2-3 सेकंड बचाता है, लेकिन जब मैं परीक्षण चला रहा हूं तो यह मदद नहीं करता है। मुझे लगता है कि यह मेरे सभी पतले उदाहरणों को फिर से शुरू करने के लिए 5 मिनट का इंतजार कर रहा है और मेरे परीक्षण चलाने से 15 सेकंड पहले भी इंतजार कर रहा है, लेकिन रेलवे के साथ उत्पादकता के कारण यह एक स्वीकार्य व्यापार है। अगर किसी के पास कोई है चीजों को गति में मदद करने के लिए विचार, मैं सभी कान हूँ।

नोट:: यहाँ परीक्षण के परिणाम हैं रेल 2.3 देव में कम से कम 3 सेकंड में भरा हुआ है (हालांकि मैं इंजन के लिए कोड का एक छोटा सा बदला है और haml जोड़ लिया है में मेरे ऐप और इस कदम के बाद से twitter_oauth जवाहरात rails3)

** सभी परीक्षणों रेल 3RC और रूबी पतला साथ 1.9.2rc2

प्रॉड के साथ आयोजित किया - CentOS 5.5, रैकस्पेस बादल सर्वर 2GB उदाहरण
परीक्षण ऐप्लिकेशन # 1 के साथ 24 मणि निर्भरता

 
start env.rb - Total=0 
    start app.rb - 0.00110546 elapsed. Total=0.001180052 
    start boot.rb - 0.000600488 elapsed. Total=0.00178644  
    end boot.rb - 0.7935529 elapsed. Total=0.795507318 
    start require rails/all - 0.000189127 elapsed. Total=0.795701199 
    end require rails/all - 1.086998364 elapsed. Total=1.882735263 
    start Bundler require - 0.000109708 elapsed. Total=1.88285043 
    end Bundler require - 8.955853243 elapsed. Total=10.838746673 
    end app.rb - 0.062975913 elapsed. Total=10.901753753 
    # /railties-3.0.0.rc/lib/rails/initializable.rb 
    start run initializers - 0.000145906 elapsed. Total=10.901910186 
    load_environment_config - 0.116689774 elapsed. Total=11.018632298 
    initialize_cache - 0.246161343 elapsed. Total=11.320543397 
    active_record.initialize_database - 0.080047485 elapsed. Total=11.400961893 
    bootstrap_hook - 1.034189984 elapsed. Total=12.451309104 
    active_support.initialize_time_zone - 1.969821814 elapsed. Total=14.448777651 
    action_controller.set_configs - 0.594991537 elapsed. Total=15.044692126 
    will_paginate.active_record - 0.324460921 elapsed. Total=15.386837641 
    will_paginate.action_view - 1.904889132 elapsed. Total=17.328981523 
    add_view_paths - 0.087811847 elapsed. Total=17.42011881 
    load_init_rb - 0.151282681 elapsed. Total=17.709093173 
    load_init_rb - 0.362241273 elapsed. Total=18.071865548 
    load_config_initializers - 0.144051305 elapsed. Total=18.217433492 
    build_middleware_stack - 2.569453884 elapsed. Total=20.826842081 
    eager_load! - 4.165919064 elapsed. Total=24.99280168 
    finisher_hook - 0.48795935 elapsed. Total=25.480807439 
    repopulate_roles - 0.504085662 elapsed. Total=25.984901297 
    end run initializers - ~0.00005 elapsed. Total=25.985617783 
end env.rb - ~0.00006 elapsed. Total=25.985683903 

देव संकर जाति के साथ - मैक्स OSX 10.5.8, 2.66 Core2Duo, 4 जीबी रैम
परीक्षण ऐप्लिकेशन 24 मणि के साथ # 1

 
start boot.rb (Bundler.setup) - 2.0e-05 elapsed. Total=3.1e-05 
end boot.rb (Bundler.setup) - 2.352435 elapsed. Total=2.352915 
start app.rb - 0.084945 elapsed. Total=2.437866 
    start require rails/all - 0.000181 elapsed. Total=2.438049 
    end require rails/all - 0.489425 elapsed. Total=2.927485 
    start Bundler.require(:default, Rails.env) - 5.6e-05 elapsed. Total=2.927544 
    end Bundler.require(:default, Rails.env) - 5.16162 elapsed. Total=8.089177 
end app.rb - 0.025972 elapsed. Total=8.11516 
start env.rb - 0.084153 elapsed. Total=8.199329 
    # /railties-3.0.0.rc/lib/rails/initializable.rb 
    start run_initializers - 0.002709 elapsed. Total=8.202042 
    initialize_cache - 0.089231 elapsed. Total=8.518005 
    bootstrap_hook - 0.602342 elapsed. Total=9.192564 
    active_support.initialize_time_zone - 0.901676 elapsed. Total=10.10115 
    action_controller.set_configs - 0.375864 elapsed. Total=10.477565 
    will_paginate.active_record - 0.207447 elapsed. Total=10.694479 
    will_paginate.action_view - 1.041412 elapsed. Total=11.75974 
    load_init_rb - 0.051938 elapsed. Total=11.879547 
    load_init_rb - 0.082936 elapsed. Total=12.001311 
    load_init_rb - 0.18798 elapsed. Total=12.189555 
    load_config_initializers - 0.079461 elapsed. Total=12.269971 
    build_middleware_stack - 1.390042 elapsed. Total=13.729273 
    finisher_hook - 0.082274 elapsed. Total=13.811648 
    repopulate_roles - 0.350287 elapsed. Total=14.161941 
    end run_initializers - 3.0e-06 elapsed. Total=14.177869 
end env.rb - 0.000127 elapsed. Total=14.178002 

देव निर्भरता संकर जाति के साथ परीक्षण ऐप्लिकेशन # 2 के साथ 2 मणि ​​निर्भरता

 
start boot.rb (Bundler.setup) - Total=0 
end boot.rb (Bundler.setup) - 1.724158 elapsed. Total=1.724199 
start app.rb - 0.041006 elapsed. Total=1.765211 
    start require rails - 0.000151 elapsed. Total=1.765364 
    end require rails - 0.360051 elapsed. Total=2.125426 
    start Bundler.require(:default, Rails.env) - 5.5e-05 elapsed. Total=2.125485 
    end Bundler.require(:default, Rails.env) - 0.008396 elapsed. Total=2.133889 
end app.rb - 0.007805 elapsed. Total=2.141704 
start env.rb - 0.16541 elapsed. Total=2.307128 
    start run_initializers - 0.00031 elapsed. Total=2.307442 
    load_active_support - 0.24045 elapsed. Total=2.579421 
    active_support.initialize_time_zone - 0.206237 elapsed. Total=2.837663 
    action_controller.deprecated_routes - 0.210291 elapsed. Total=3.048634 
    build_middleware_stack - 0.220663 elapsed. Total=3.273035 
    end run_initializers - 3.0e-06 elapsed. Total=3.29339 
end env.rb - 8.7e-05 elapsed. Total=3.293483 
+0

आपके प्रयोग के परिणामों को साझा करना बहुत ही दयालु है। मुझे यकीन नहीं है कि आप किस रूबी का उपयोग कर रहे हैं, लेकिन मुझे लगता है कि रूबी> = 1.9 चीजों को थोड़ा सा गति देगा। –

+1

मैं रुबी 1.9.2 का उपयोग कर रहा हूं। प्रदर्शन रत्न लोड करने और रेल फ्रेमवर्क की मॉड्यूलरिटी से ही परिणाम है। आपके पास जितनी अधिक निर्भरताएं हैं, उतना ही समय लगेगा जितना आपके ऐप को शुरू करने के लिए होगा, जो समझ में आता है। मुझे संदेह है कि कोर टीम इसे गति देने के लिए बहुत कुछ कर सकती है ... कम से कम अल्प अवधि में नहीं। – johnmcaliley

+0

मुझे आश्चर्य है कि रेल मॉड 2 इतने तेज़ तरीके से बूट क्यों नहीं हुआ ... फिर शायद सवाल होना चाहिए: बंडलर को सभी निर्भरताओं को लोड करने में इतना समय क्यों लगता है? क्या यह उनको हल करता है या यह सिर्फ उन्हें अंधा कर देता है? मुझे लगता है कि अगर हम बंडल की सभी स्मार्टनेस-एस को अक्षम कर सकते हैं और निर्भरताओं को 'बस लोड' कर सकते हैं तो यह चीजों को गति देगा ... –

उत्तर

2

चूंकि यह एक पुराना सवाल है: क्या आपने इसे आर के रिलीज़ संस्करण के साथ परीक्षण किया है 3 एल्स?

यह एक लंबा समय है लेकिन अंत में अर्थहीन है। मेरे रेल ऐप्स एक समय में महीनों तक रहते हैं ताकि कुल रनटाइम के 1 प्रतिशत के अंश का अंश हो।

क्या आपके पास बंडलर से निपटने के लिए निर्भरता का एक टन है? मैं अपने रेल 3 एप को किसी भी पर्यावरण में 2 सेकंड से भी कम समय में शुरू कर सकता हूं, लेकिन मैं बहुत कम तीसरे पक्ष के रत्नों का उपयोग करता हूं।

+0

मैं अब रेल 3 आधिकारिक रिलीज का उपयोग कर रहा हूं। हालांकि मैंने फिर से बेंचमार्क नहीं चलाए हैं, बूट समय में उल्लेखनीय सुधार नहीं हुआ है। हां, मेरे ऐप में निर्भरताएं हैं और आप देख सकते हैं कि बेंचमार्क में मेरे सर्वर पर लगभग 3 सेकंड में एक खाली रेल 3 ऐप बूट होता है। यह एक परेशान था जब मैं पैसेंजर का उपयोग करने की कोशिश कर रहा था और प्रक्रियाओं के लिए इंतजार कर रहा था। मैं सप्ताह में कम से कम कुछ बार परिवर्तनों को तैनात करता हूं और मेरे सिस्टम पर सैकड़ों उपयोगकर्ताओं के साथ, 30 सेकंड प्रतीक्षा या डाउनटाइम एक समस्या है। मैंने पतले पर स्विच किया और रोलिंग रीस्टार्ट का इस्तेमाल किया, इसलिए यह वास्तव में उसके बाद कोई मुद्दा नहीं था। – johnmcaliley

+0

इसके अलावा, पैसेंजर 3 बीटा पर, यह शून्य-डाउनटाइम पुनरारंभ और एक नया स्पॉन्गिंग आर्किटेक्चर के साथ अब कोई मुद्दा नहीं है। तो आप सही हैं ... यह आखिरकार अर्थहीन है, शायद परीक्षण से अलग (यदि आप स्पार्क की तरह कुछ नहीं कर रहे हैं)। – johnmcaliley

+0

यह अभी भी है .. लेकिन समस्या विकास में है, यह भी लंबे समय लगता है, जो निराशाजनक है। – rtdp

2

बंडलर अक्सर अपने आधे से अधिक समय रत्न की आवश्यकता होती है। क्या आप निर्भर हैं कि आप dev/test मोड में अनावश्यक लोड कर रहे हैं?उदाहरण के लिए, मेरे कुछ रत्न केवल रेज श्रमिकों या अन्य स्क्रिप्ट में उपयोग किए जाते हैं। आप :require => false जोड़ सकते हैं और फिर उन्हें मैन्युअल रूप से आवश्यकता होती है जब आपको उन्हें dev/test मोड में कुछ मामूली स्टार्टअप स्पीड लाभों के लिए आवश्यकता होती है।

ऐसा करने से पहले, मैं आमतौर पर आवश्यक बयानों (lib/bundler/runtime.rb में) को देखने के लिए प्रोफ़ाइल देखता हूं कि वे वास्तव में बाहर निकलने के लायक हैं या नहीं।

+0

मेरे पास वास्तव में देव/परीक्षण में अधिक रत्न हैं .. मोंगेल, क्यूक, आरएसपीईसी, आदि ;-) मैं मानता हूं कि यह एक अच्छा अभ्यास है, हालांकि। यदि आप नज़दीकी नज़र डालें और सुनिश्चित करें कि आप वास्तव में रत्न में सबकुछ का उपयोग कर रहे हैं तो यह निश्चित रूप से आपको कुछ सेकंड बचा सकता है। – johnmcaliley

0

मेरे पास 3 रेल 3 ऐप्स हैं और मैं 2.3.8 से एक माइग्रेट कर रहा हूं, रेलवे पर एक 2.3 सेकंड लोड में 4 सेकंड लोड करता है, और रेलवे में आधा रास्ते वाली शाखा 3 सेकंड 12 सेकंड लेती है, अन्य सभी रेल 3 परियोजनाओं को लोड करने के लिए 20 से 30 सेकेंड लगते हैं, जब मैं एक स्क्रीनकास्ट देखता हूं तो यह बहुत निराशाजनक होता है जहां कोई 3 सेकंड में अपने रेल ऐप को लोड करता है, मैं अपने बालों को खींच रहा हूं क्योंकि मैं रेलों में स्थानांतरित हुआ 3 सोच रहा था कि यह मेरा पर्यावरण था।

+0

शायद 3 सेकंड यदि आपके पास कोई निर्भरता नहीं है और आप शीर्ष पायदान हार्डवेयर पर चल रहे हैं। मैंने अभी भी निर्भरता वाले किसी भी ऐप्स के लिए 10 सेकंड से कम नहीं देखा है। – johnmcaliley

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