2008-09-18 9 views
5

जब मोबाइल ग्राहकों के साथ काम कर यह बहुत HTTP अनुरोध प्रसारण के दौरान multisecond देरी के लिए आम बात है। यदि आप एक prefork अपाचे बच्चे प्रक्रियाओं भले ही आपके अनुप्रयोग सर्वर तर्क 5ms में किया जाता है एक भी मोबाइल ग्राहक की सेवा कर सेकंड के लिए करार किया जाएगा, से बाहर पृष्ठों या सेवाओं की सेवा कर रहे हैं। मैं एक HTTP सर्वर, बैलेंसर या प्रॉक्सी सर्वर की तलाश कर रहा हूं जो निम्न का समर्थन करता है:अनुरोध/प्रतिक्रिया बफरिंग और देरी कनेक्शन के लिए स्पष्ट, विन्यास समर्थन के साथ किसी भी HTTP प्रॉक्सी?

  1. अनुरोध एक प्रॉक्सी पर आता है। प्रॉक्सी रैम में या डिस्क में बफरिंग शुरू करता है जिसमें हेडर और पोस्ट/पुट निकायों सहित अनुरोध शामिल है। प्रॉक्सी बैकएंड सर्वर से कनेक्शन नहीं खोलता है। यह शायद सबसे महत्वपूर्ण हिस्सा है।

  2. प्रॉक्सी सर्वर बंद हो जाता है अनुरोध बफरिंग जब:

    • एक आकार सीमा, पर पहुँच गया है किया गया (जैसे कि, 4KB), या
    • अनुरोध पूरी तरह से प्राप्त की गई है हेडर और शरीर
  3. केवल अब, (का हिस्सा) स्मृति में अनुरोध के साथ, एक कनेक्शन बैकएंड के लिए खोला गया है और अनुरोध रिले की जाती है।

  4. बैकएंड प्रतिक्रिया वापस भेजता है। फिर प्रॉक्सी सर्वर इसे तुरंत बफर करना शुरू कर देता है (64kB का कहना है।)

  5. चूंकि प्रॉक्सी में काफी बड़ा बफर है, बैकएंड प्रतिक्रिया पूरी तरह से प्रॉक्सी सर्वर में मिलीसेकंड के मामले में संग्रहीत होती है, और बैकएंड प्रक्रिया/धागा अधिक अनुरोध संसाधित करने के लिए स्वतंत्र है। बैकएंड कनेक्शन तुरंत बंद कर दिया गया है।

  6. प्रॉक्सी मोबाइल क्लाइंट को प्रतिक्रिया वापस भेजता है, जैसे कि बैकएंड टाईप अप संसाधनों के संबंध में, बिना तेज़ या धीमी गति से।

मैं काफी आप विद्रूप के साथ 4-6 कर सकते हैं यकीन है, और nginx 1-3 समर्थन करने के लिए प्रकट होता है (और इस संबंध में काफी अद्वितीय तरह दिखता है)। मेरा सवाल है: क्या कोई प्रॉक्सी सर्वर है जो इन बफरिंग और न खोलने-कनेक्शन-तक-तैयार क्षमताओं का सहानुभूति देता है? शायद अपाचे कॉन्फ़िगर-फु का थोड़ा सा हिस्सा है जो इस बफरिंग व्यवहार को छोटा बनाता है? उनमें से कोई भी यह स्क्विड जैसे डायनासोर नहीं है और यह एक दुबला सिंगल-प्रोसेस, एसिंक्रोनस, इवेंट-आधारित निष्पादन मॉडल का समर्थन करता है?

(Siderant: मैं nginx का उपयोग करेंगे, लेकिन यह chunked पोस्ट निकायों का समर्थन नहीं करता है, यह मोबाइल ग्राहकों के लिए सामान की सेवा के लिए बेकार बना हाँ सस्ते $ 50 हैंडसेट प्यार पदों chunked ... आह।)

उत्तर

2

Fiddler , टेलीरिक से एक मुफ्त उपकरण, कम से कम कुछ चीजें जो आप खोज रहे हैं।

विशेष रूप से, Rules | Custom Rules... के पास जाकर आप कनेक्शन के दौरान सभी बिंदुओं पर मनमाने ढंग से जावास्क्रिप्ट कोड जोड़ सकते हैं। आप sleep() कॉल के साथ आवश्यक कुछ चीजों का अनुकरण कर सकते हैं।

मुझे यकीन नहीं है कि यह विधि आपको ठीक बफरिंग नियंत्रण देता है, हालांकि आप चाहते हैं। फिर भी, कुछ भी कुछ भी बेहतर नहीं हो सकता है?

+0

एक बहुत ही शांत HTTP डिबग उपकरण की तरह लग रहा मिलना चाहिए! दुर्भाग्य से मैं जो चाहता हूं वह प्रॉक्सी सर्वर है, HTTP निगरानी/हेरफेर के लिए डेस्कटॉप यूआई नहीं। –

0

दुर्भाग्यवश, मुझे इसके लिए तैयार समाधान के बारे में पता नहीं है। सबसे खराब स्थिति परिदृश्य में, जावा एनआईओ का उपयोग करके इसे स्वयं विकसित करने पर विचार करें - इसे एक सप्ताह से अधिक समय नहीं लेना चाहिए।

4

क्या दोनों nginx और विद्रूप (ग्राहक - विद्रूप - nginx - बैकएंड) का उपयोग कर के बारे में? जब एक बैकएंड से डेटा लौटने, विद्रूप करता सी टी ई से परिवर्तित: सामग्री-लंबाई सेट के साथ एक नियमित रूप से धारा को chunked है, तो शायद यह पोस्ट भी सामान्य कर सकते हैं।

+0

ऐसा लगता है कि एक कस्टम समाधान विकसित किए बिना ऐसा करने का एकमात्र तरीका है, मुझे पता नहीं था कि स्क्विड ने चंकित शरीर को 1.0 अनुरोध में बदल दिया था। सर उठाने के लिए धन्यवाद! –

2

Nginx सब कुछ आप चाहते हैं कर सकते हैं। कॉन्फ़िगरेशन पैरामीटर आप देख रहे हैं

http://wiki.codemongers.com/NginxHttpCoreModule#client_body_buffer_size

और कर रहे हैं

http://wiki.codemongers.com/NginxHttpProxyModule#proxy_buffer_size

+0

Nginx चंकित पोस्ट निकायों का समर्थन नहीं करता है, जो कई जावा एमई मोबाइल क्लाइंट बलपूर्वक भेज देंगे। मैं पहले से ही डेस्कटॉप ब्राउज़र और यह चट्टानों पर सेवा की जा रही साइटों पर nginx का उपयोग कर रहा हूं, लेकिन अधिकांश जावा एमई क्लाइंट से निपटने पर यह बेकार है। –

+0

हां, मैंने अभी देखा है कि nginx 0.7.17 चल रहा है। मैं इसे nginx मेलिंग सूची पर लाऊंगा। –

1

विद्रूप 2.7 एक पैच के साथ 1-3 का समर्थन कर सकते हैं:

मैं इस परीक्षण किया है और यह, परंतुक है कि यह केवल स्मृति को बफ़र्स के साथ, अच्छी तरह से काम करने के लिए, नहीं डिस्क (जब तक यह अदला-बदली, ज़ाहिर है, और यदि आप इस चाहते हैं) तो आप एक पर इसे चलाने के लिए की जरूरत मिल गया है बॉक्स जो आपके वर्कलोड के लिए उचित रूप से प्रावधान है।

chunked पोस्ट सबसे सर्वर और बिचौलियों के लिए एक समस्या है। क्या आप वाकई समर्थन की ज़रूरत है? आम तौर पर ग्राहकों को पुनः अनुरोध जब वे एक 411

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