2012-12-18 10 views
19

के माध्यम से खोज करते समय रेल फ्रीज हो जाती है मैं टीएमयूक्स का उपयोग कर विकास मोड में रेल 3.2.6 चला रहा हूं। जब मैं टीएमयूक्स का उपयोग कर रेल सर्वर के आउटपुट बफर (रेल का उपयोग करके चलाता हूं) के माध्यम से स्क्रॉल करता हूं, तो सर्वर फ्रीज करता है और किसी भी अनुरोध को संसाधित नहीं करता है। जब मैं स्क्रॉलबैक मोड से बचता हूं, तो सर्वर ठीक से काम करना शुरू कर देता है।टीएमक्स आउटपुट बफर

मैं आउटपुट बफर के माध्यम से प्रसंस्करण अनुरोधों को रखने के लिए अपना सर्वर कैसे स्थापित कर सकता हूं?

उत्तर

21

यदि आप लॉग संदेश के किसी विशेष अनुक्रम पर रोकना और जांचना चाहते हैं, जबकि आपका सर्वर प्रसंस्करण अनुरोध जारी रखता है, तो संभवतः लॉग फ़ाइलों को सीधे देखना सर्वोत्तम होता है; आप less -R log/development.log का उपयोग कर सकते हैं।

जबकि एक tmux फलक "कॉपी मोड" (एक फलक के इतिहास को देखने के लिए इस्तेमाल किया मोड), में है tmux फलक के tty में चल रहे प्रक्रियाओं से किसी भी उत्पादन नहीं पढ़ता। यदि प्रक्रियाएं tty को आउटपुट लिखना जारी रखती हैं, तो ओएस का टीटी बफर अंततः भर जाएगा। जब कोई प्रोग्राम पूर्ण बफर के साथ एक tty को लिखता है, तो यह प्रक्रिया को अवरुद्ध करने का कारण बनता है ताकि बफर ओवरफ़्लो न हो; यह आपके सर्वर को अस्थायी रूप से प्रसंस्करण अनुरोधों को रोकने का कारण बनता है।

समय इस तरह दिखता है:

  1. आप कुछ पुराने उत्पादन देखने पर प्रतिलिपि मोड में प्रवेश।
    tmux tty से पढ़ने से रोकता है।
  2. आपका रेल सर्वर tty को लिखना जारी रखता है क्योंकि यह चल रहे अनुरोधों को संभालता है।
    ओएस कुछ सीमित आकार के टीटी बफर में इन लिखों को अवशोषित करता है।
  3. आखिरकार, ओएस टीटी बफर भर जाता है और आगे बढ़ने के लिए टीटी को लिखता है।
    यह वह जगह है जहां रेल सर्वर "फ्रीज" होता है; यह ओएस के लिए वापस आने के लिए इंतजार कर रहा है (उदा।) लिखें (2) इसे लॉग संदेश प्रदर्शित करने के लिए कॉल करें।
  4. आप कॉपी मोड से बाहर निकलें।
    tmux tty से पढ़ने को फिर से शुरू करता है, buffered आउटपुट को निकालने और नए आउटपुट को स्वीकार करता है।
+1

टीएमयूक्स का उपयोग न करने के अलावा, क्या इस मुद्दे के आसपास कोई रास्ता है? – justingordon

+0

@justingordon: यदि एक * tmux * फलक में चल रहा कोई प्रोग्राम पर्याप्त रूप से लिखता है जबकि फलक "प्रतिलिपि मोड" में होता है, तो अंत में यह अवरुद्ध हो जाएगा। यदि आपको एक चतुर, लंबे समय तक चलने वाली प्रक्रिया के आउटपुट की समीक्षा करने की आवश्यकता है तो आउटपुट को लॉग फ़ाइल में भेजना बेहतर है और * tmux * के "कॉपी मोड" का उपयोग करने के बजाय 'कम' जैसे कुछ का उपयोग करना बेहतर है। –

+0

iTerm2 में txmux चलाना इस समस्या के आसपास एक तरीका है। – justingordon

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