SOAP सेवा के लिए रिवर्स प्रॉक्सी करने के लिए mod_proxy का उपयोग करते समय आंतरायिक त्रुटि


17

Mod_proxy को SOAP वेब सेवा के लिए रिवर्स प्रॉक्सी के रूप में उपयोग करने पर मुझे यह त्रुटि हर कुछ मिनट में मिलती है। शायद प्रति सेकंड 3 या 4 अनुरोध चल रहे हैं, इसलिए हम हर हजार में से 1 या 2 के आसपास बात कर रहे हैं जिसमें यह त्रुटि है।

[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] (20014)Internal error: proxy: error reading status line from remote server soap1.server:8888
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] proxy: Error reading from remote server returned by /someapp/path/to/web/service

यह अनुरोध को विफल करने का कारण बनता है। यदि मेरे पास क्लाइंट का उपयोग प्रॉक्सी के बिना साबुन सर्वर से सीधे जुड़ा है, तो सफलता 100% है, इसलिए समस्या प्रॉक्सी में दिखाई देती है

कॉन्फ़िगरेशन इस तरह दिखता है। यदि प्राथमिक अनुपलब्ध है, तो बैकअप सर्वर पर जाने का उद्देश्य है:

<Proxy balancer://apicluster>  
BalancerMember http://soap1.server:8888 lbset=0 
BalancerMember http://soap2.server:8888 lbset=1 
</Proxy>  

ProxyPass /someapp balancer://apicluster/someapp 
ProxyPassReverse / balancer://apicluster/someapp 

किसी को भी इस में चलाने के लिए और एक तय मिल गया है? बग रिपोर्ट में कुछ उल्लेख हैं लेकिन कोई समाधान नहीं है। केवल एक चीज जो असामान्य हो सकती है वह है क्लाइंट रिक्वेस्ट 100MB या उससे बड़ी हो सकती है, इसलिए SOAP कॉल की अपेक्षा आप अनुरोध को थोड़ा अधिक समय ले सकते हैं।


डेविड पर्ड्यू (सेटएएनवी प्रॉक्सी-प्रारंभिक-नॉट-पूल 1) का उत्तर आजकल (2016) एक वैध उत्तर है।
मैटबियनको

जवाबों:


27

मामले में कोई और इसमें भाग लेता है। यह mod_proxy का एक बग है जिसे इन पंक्तियों को अपने httpd.conf में डालकर टाला जा सकता है:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

https://issues.apache.org/bugzilla/show_bug.cgi?id=37770

इन चरों के mod_proxyदस्तावेज़ीकरण को देखने के बारे में जानकारी के लिए । उनके पास एक विशिष्ट खंड, प्रोटोकॉल समायोजन है, जो इन चरों को संबोधित करता है।


5

यहां अपाचे प्रलेखन पर ध्यान दें: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

ऐसा लगता है कि mod_proxy_http में एक दौड़ की स्थिति है, लेकिन इसमें शामिल होने से बचा जा सकता है:

SetEnv proxy-initial-not-pooled 1

यदि यह प्रारंभिक अनुरोध है तो अपाचे को एक पूल किए गए कनेक्शन का उपयोग करने से रोकता है।

दस्तावेज़ नोट करता है कि यह सेटिंग प्रदर्शन को डाउनग्रेड देगी।


1
proxy-initial-not-pooledकेवल तभी प्रभावी होता है जब आपके पास एक विशिष्ट पैच होता है, जो मुझे लगता है कि httpd 2.2 का हिस्सा नहीं है। मैं httpd 2.4 के बारे में नहीं जानता। Bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88
kubanczyk

0

आप AH01102: error reading status line from remote serverअपाचे मॉड्यूल mod_reqtimeout और इस conf निर्देश का उपयोग करके इस संबंधित त्रुटि संदेश ( ) को दबा सकते हैं :

RequestReadTimeout header=30

आपको निम्न प्रकार से पुनर्मिलन मॉड्यूल को सक्षम करना होगा:

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.