मैं एक फर्नीचर कारखाना उत्पादन प्रवाह की निगरानी के लिए एक वेब अनुप्रयोग लिख रहा हूँ। इसे संभालने के लिए हजारों डेटा हैं। अब तक, मैं Mongrel + MySQL पर RoR चलाता हूं और यह वास्तव में वास्तव में धीमा है (कुछ विचारों के लिए 2-4min)। जब मैं RoR लॉग देखता हूं, ऐसा लगता है कि डेटाबेस क्वेरी धीमी नहीं हैं (0-10 मिमी)।रेल पर रूबी धीमी है ...?
क्या आरओआर धीमा है जब यह डेटाबेस डेटा को ऑब्जेक्ट में परिवर्तित करता है? क्या Mongrel धीमा है?
संपादित करें: पहली बात: मैं देव में था। env। उत्पादन वातावरण में, सबसे धीमी दृश्य 2min लेता है (जो एक अच्छे कंप्यूटर पर 1min से भी कम हो जाएगा, मेरा 5 साल पुराना है)। रूबी-प्रोफेसर और थोड़ी सी सामान्य समझ के साथ, मुझे पता चला है कि कौन से तरीके एप्लिकेशन को धीमा कर रहे थे।
ofs = Ofkb.find_by_sql ["..some large sql query..."]
for of in ofs # About 700-1000 elements
ops = Operation.find(..the single query..)
etc.
end
यहाँ उन तरीकों पर माणिक प्रोफेसर परिणाम::
%self total self wait child calls name
32.19 97.91 97.91 0.00 0.00 55 IO#gets (ruby_runtime:0}
28.31 86.39 86.08 0.00 0.32 32128 Mysql#query (ruby_runtime:0}
6.14 18.66 18.66 0.00 0.00 12432 IO#write (ruby_runtime:0}
0.80 2.53 2.42 0.00 0.11 32122 Mysql::Result#each_hash (ruby_runtime:0}
समस्या है: मैं वास्तव में उन एकल टाल नहीं सकते समस्या यह है कि एक एसक्यूएल प्रश्नों सबसे बड़े डेटासेट पर छोरों में कहा जाता है है प्रश्नों। मुझे हजारों घटनाएं मिली हैं जिनमें से मुझे जटिल डेटा की गणना करना है। अभी मैं उन विधियों पर memcached का उपयोग कर रहा हूं जो ठीक है जब तक कि आप पृष्ठ का अनुरोध करने वाले पहले व्यक्ति नहीं हैं।
न तो, शायद यह आपके द्वारा लिखा गया कोड है जो धीमा है या तथ्य यह है कि आप विकास में उत्पादन पर चलते हैं। यदि आप विचारों की उचित सामग्री पोस्ट कर सकते हैं तो हम उचित उत्तर दे सकते हैं। – TomHastjarjanto
@ टोम के साथ सहमत हैं - यह सामान्य डेटासेट के साथ भी सामान्य नहीं है। किसी भी तरह का निदान करने के लिए हमें और जानकारी चाहिए। –
यह गूंगा लग सकता है, लेकिन सुनिश्चित करें कि आप उत्पादन मोड में चल रहे हैं।देव मोड प्रत्येक अनुरोध पर सभी वर्गों को फिर से लोड करेगा। –