2012-02-28 17 views
61

मैं अपाचे 2 के साथ उबंटू संचालित वर्चुअलबॉक्स चलाने के लिए वग्रेंट का उपयोग कर रहा हूं।वग्रेंट/वर्चुअलबॉक्स/अपाचे 2 अजीब कैश व्यवहार

वेबसर्वर, दूसरों के बीच, मेरी/योनि निर्देशिका से स्थिर फाइलें प्रदान करता है।

यह अधिकतर समय काम करता है। लेकिन जब मैं अपने साझा फ़ोल्डर पर एक छवि बदलता हूं और वेबसाइट को फिर से लोड करता हूं, तो छवि का पिछला संस्करण परोसा जाता है, लेकिन इसे छोटा कर दिया जाता है।

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

क्या किसी को इस समस्या के बारे में पता था? मेरे पास कुछ विशेष इंस्टॉल नहीं है, बस अपाचे 2 mod_rewrite के साथ और मोंगो, एपीसी प्लगइन, मोंगोडीबी के साथ PHP और स्क्रिप्ट्स के समूह के साथ नोडजेएस के साथ PHP।

+1

मैं एक ही समस्या थी लेकिन एक पाठ (JSON) फ़ाइल के साथ।मैं केवल Nginx की कोशिश करने के बाद इस जवाब को खोजने के लिए एक विशिष्ट पर्याप्त खोज करने में सक्षम था और पाया कि यह अपाचे के समान समस्या थी। –

उत्तर

132

मिले जवाब here:

जे.सी.,

आप जो देख रहे है, क्योंकि हो सर्वर स्टैटिक फ़ाइलें की सेवा "Sendfile()" syscall, जिसके साथ टूट गया है का उपयोग कर रहा है वर्चुअलबॉक्स फ़ाइल सिस्टम। आपको अपने सर्वर में sendfile() उपयोग को अक्षम करने की आवश्यकता है।

EnableSendfile

बंद और nginx के लिए: अपाचे के लिए Sendfile बंद;

बेस्ट, मिशेल

+3

इस असाधारण समस्या के लिए एक स्पष्टीकरण की तलाश में, मुझे आपका जवाब मिला। यह भी ध्यान रखना अच्छा है कि यदि आप फ़ाइलों को साझा करने के लिए एनएफएस का उपयोग कर सकते हैं, तो यह एक अधिक विश्वसनीय और तेज़ समाधान है, और इस विशेष समस्या से पीड़ित नहीं है: http://vagrantup.com/v1/docs/nfs.html – Gerry

+17

ओह मेरे भगवान, इसे पोस्ट करने के लिए आपको बहुत बहुत धन्यवाद। मैं पूरे दिन के लिए इस यक को दाढ़ी देने की कोशिश कर रहा हूं। : डी –

+4

इसके लिए आपको बहुत बहुत धन्यवाद। मैं अपने जीवन के आखिरी 4 घंटे वापस चाहता हूं। – Deinumite

8

यह मुझे पागल गाड़ी चला गया है! इस फिलिप को पोस्ट करने के लिए धन्यवाद। आप में से जो लोग पता नहीं कैसे कॉन्फ़िग फ़ाइल को बदलने क्या करना है के लिए, यहाँ मैं क्या किया है: $ sudo find -name "nginx.conf"

मेरा यहाँ था: ./etc/nginx/nginx.conf

तो मैं इस भाग गया

फ़ाइल को खोजने के लिए यह संशोधित करने के लिए: $ sudo nano ./etc/nginx/nginx.conf

बदलें पंक्ति है कि sendfile on;sendfile off; को

के लिए मत भूलनाऔर vagrant reload!

+0

प्रेषण के परिवर्तन में एक टाइपो है। इसे बंद कर दिया जाना चाहिए, है ना? – user49438

+0

हाँ, आप सही हैं। – Kenzo

3

Laravel 5 का उपयोग कर किसी के लिए, Barryvdh के Debugbar और browserSync gulp.watch के माध्यम से आपको यह त्रुटि मिल सकता है। ब्राउजर सिंक मेरे अनुरोध को प्रॉक्सी कर रहा था, इस वजह से मुझे बिल्कुल वही त्रुटि थी। अगर मैं के माध्यम से मेरी डेव सर्वर देखे गए: http://127.0.0.1:3000/laravel/page मैं त्रुटि http://127.0.0.1/laravel/page त्रुटि चला गया।

मैंने इसे ब्राउज़र सिंक पर अपने दोस्तों के साथ फ़्लैग किया है, वे एक शानदार काम करते हैं। इसलिए, यह एक समाधान की तुलना में एक कारण के और अधिक है, लेकिन अगर यह किसी भी अधिक समय बर्बाद कर से पहले आपकी समस्या है बजाय घंटे खर्च इसे ठीक करने की कोशिश कर रहा, परीक्षण देखने के लिए।

यह समस्या यह भी एक CentOS/VirtualBox के सेटअप में सीएसएस फ़ाइलों के संबंध में अजीब व्यवहार के लिए जिम्मेदार था भी the errors found in this article

0

के समान है।

आप/सीरम फ़ोल्डर में एक सीएसएस फ़ाइल की सामग्री बदल सकते हैं, और ब्राउज़र 200 की स्थिति (304 के बजाय) दिखाएगा, जिसका अर्थ है कि यह फ़ाइल नई थी। लेकिन सामग्री बदल नहीं होती। vboxvfs जो synched कर रहे हैं फ़ाइलों को mmapped उपयोग के साथ कुछ समस्याएं हैं लगता है जहां:

4

यह VirtualBox में वर्ष बग (#819, #9069, #12597, #14920 देखें)।

यह तब हो सकता है जब आप वीएम के बाहर फ़ाइल संपादित करते हैं, और आप वीएम के भीतर एक ही परिवर्तन को देखने की उम्मीद करते हैं।

इस समस्या को वैकल्पिक हल के लिए आप गिरी Sendfile EnableSendfile option को अक्षम करके ग्राहक के लिए फ़ाइलों को वितरित करने के लिए समर्थन निष्क्रिय करने के लिए की जरूरत है, httpd.conf में या vhosts फ़ाइल है, उदा या तो

<Directory "/path-to-nfs-files"> 
    EnableSendfile Off 
</Directory> 

यह विशेष रूप से एनएफएस या एसएमबी माउंट की गई फ़ाइलों के लिए परेशानी है। परिवर्तन के बाद अपाचे को पुनः लोड करें।

Similar for Nginx (nginx.conf में), उदा।

sendfile off; 

अन्य वैकल्पिक हल मेजबान पर फ़ाइलों को संपादित करने के लिए नहीं है, या एक ही फाइल को फिर से संपादित करने का प्रयास है, लेकिन वी एम के भीतर याद करने के लिए है।


एक और कामकाज में लिनक्स पेजकैच को छोड़ना शामिल है, उदा।

echo 1 > /proc/sys/vm/drop_caches 

या कैश साफ़ करने के लिए हर दूसरे (प्रति this post के रूप में), कोशिश:

watch -n 1 $(sync; echo 1 > /proc/sys/vm/drop_caches) 

नोट: संख्या dentries और inodes, पेजकैश के लिए 3, dentries के लिए पेजकैश, 2 को मुक्त कराने के लिए 1 खड़ा और inodes।


ऊपर समस्या निम्नलिखित mmap परीक्षण कार्यक्रम के द्वारा दोहराया जा सकता है, देखें: mmap-problem.c

+1

'echo 1>/proc/sys/vm/drop_caches' की पुष्टि कर सकते हैं किसी समस्याग्रस्त/वर्चुअलबॉक्स सेटअप पर समस्या को हल करता है। यह एक ज्ञात मुद्दा प्रतीत होता है: https://www.virtualbox.org/ticket/9069 कम से कम यह केवल छह वर्ष का है। – jevon

4

मुझे वर्चुअलबॉक्स/डॉकर/एनजिनक्स पर्यावरण के साथ समान समस्या मिली है।

लिनक्स पेजकैच echo 1 > /proc/sys/vm/drop_caches छोड़ने का निर्णय ठीक काम करता है लेकिन अजीब लग रहा है।

nginx.conf में निर्देश समस्या का समाधान नहीं किया और मैंने इसे expires off; निर्देश के साथ उपयोग करने का प्रयास किया और यह सफल रहा।

तो, मेरे निर्णय लग रहा है

तरह
sendfile off; 
expires off;