इस त्रुटि को समझना: apr_socket_recv: सहकर्मी द्वारा कनेक्शन रीसेट (104)


14

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

मैं यह भी नहीं जानता कि इसका क्या मतलब है। तो मैं इसे कैसे ठीक कर सकता हूं? या यह सिर्फ कुछ है जो कि होगा अगर सर्वर को बहुत सारे हिट वैसे भी मिलते हैं? समस्या यह है, अगर मैं 10,000 हिट चलाता हूं, तो यह सब पूरी तरह से चलेगा। अगर मैं इसे फिर से चलाता हूं, तो इसे 4000 में मिलेगा और त्रुटि मिलेगी:

apr_socket_recv: Connection reset by peer (104)

मेरे सेटअप के बारे में थोड़ा: मेरे पास स्टैटिक रिक्वेस्ट लेने और डायनेमिक को अपाचे करने के लिए प्रोसेसिंग करने के लिए नगेंक्स है। प्रश्न में फ़ाइल को कैश से nginx द्वारा परोसा जाता है, इसलिए मुझे लगता है कि यह संभवतः nginx के अनुरोधों को कैसे संभाल रहा है?

विचार?

जवाबों:


7

त्रुटि का अर्थ है कि दूसरे छोर (वेबसर्वर) को सत्र के बीच में अचानक काट दिया गया। वहाँ कुछ भी संदिग्ध है या नहीं, यह देखने के लिए अपाचे या नेग्नेक्स त्रुटि लॉग पर एक नज़र डालें।


4

इसका अर्थ है कि सर्वर अनुरोध के साथ बहुत अधिक लोड है अर्थात, सभी थ्रेड अनुरोध को पूरा करने में व्यस्त हैं। समाधान: या तो server.xml फ़ाइल में कनेक्टर के लिए मैक्सहाइट विशेषता काउंट को बढ़ाएँ या एक्सेप्ट विशेषता मान को बढ़ाएँ।

स्वीकार: आवक कनेक्शन अनुरोधों के लिए अधिकतम कतार लंबाई जब सभी संभावित अनुरोध प्रसंस्करण थ्रेड उपयोग में होते हैं। कतार पूर्ण होने पर प्राप्त किसी भी अनुरोध को अस्वीकार कर दिया जाएगा।


0

मेरे पास एक ही समस्या थी और मेरा सर्वर संस्करण था:

Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.6.5 mod_perl/2.0.9dev Perl/v5.16.3

मैंने अप्राकृतिक मॉड्यूल हटा दिया है और समस्या दूर हो गई है:

Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips

इसलिए mod_fcgid , mod_php या mod_perl में से एक समस्या पैदा कर रहा है। यदि आप उपयोग नहीं कर रहे हैं तो आप उन्हें निष्क्रिय करने का प्रयास कर सकते हैं।

(साइड नोट; यदि आप opcache का उपयोग कर रहे हैं, तो fast_shutdown को भी अक्षम करें। यह समस्या पैदा कर रहा था: opcache.fast_shutdown = 0)


0

यहाँ उत्तर के अलावा, मैंने बहुत से अन्य को पढ़ा है:

उनकी किसी ने मदद नहीं की।

मैंने इसी तरह के संघर्षों कोwrk देखने के बाद स्विच करने के बारे में सोचा ।

समस्या का पता लगाना

समस्या एफरमल पोर्ट की मात्रा से संबंधित प्रतीत होती है । मैंने इसे 50000 से 25000 तक सेट करने की कोशिश की क्योंकि यह पोर्ट रेंज है। फिर भी नसीब नहीं। तब मुझे यह आभास हुआ कि यह TIME_WAIT और इस ब्लॉग पोस्ट से संबंधित है । मुझे लगता है कि मैं इसकी पुष्टि कर सकता हूं:

$ netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

    1 CLOSE_WAIT
    1 established)
    1 Foreign
    4 LISTEN
    8 SYN_SENT
   62 SYN_RECV
  351 ESTABLISHED
13916 TIME_WAIT

मैंने क्या कोशिश की

मैंने अब तक इसे ठीक नहीं किया: - /

मेरे अनुसार sudo sysctl -a | grep net.ipv4.tcp, मेरे पास है:

net.ipv4.tcp_tw_reuse = 0    # No luck setting only that to 1
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_fin_timeout = 60  # Setting it to 5 didn't help either

-1

यह समस्या सिस्टम के कारण होती है। यदि सिस्टम के लिए एक उच्च संगामिति अनुरोध दे। OS कर्नेल SYN बाढ़ सुरक्षा को ट्रिगर करेगा। तो सिस्टम लिंक को रीसेट कर देगा। आप फ़ाइल में OS कॉन्फ़िगर को संशोधित कर सकते हैं।

#vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 0 # set value is 0
#sysctl -p # read config from the config file.

आप इसे आज़मा सकते हैं।

आमतौर पर विशेषता net.ipv4.tcp_syncookiesका उपयोग ओएस की रक्षा के लिए किया गया था ताकि बड़े अनुरोध के हमले से बचा जा सके। लेकिन अगर आप कुछ लोड टेस्ट या प्रदर्शन परीक्षण करने के लिए इस ओएस का उपयोग करना चाहते हैं, तो आपको इस सुविधा को बंद कर देना चाहिए।

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