हमारे (लिनक्स) सर्वर ने {active, once}
को अपने सॉकेट के साथ विकल्प का उपयोग किया, और वहां {tcp_error, Socket, etimedout}
संदेश पॉप-अप हुए। मुझे पता है कि यह खराब नेटवर्क स्थितियों के कारण हो सकता है, लेकिन इसके बारे में कुछ अजीब बात थी।एक सक्रिय सॉकेट का '{tcp_error, सॉकेट, etimedout} संदेश कहां से आता है?
टीसीपी keepalive सिस्टम-वाइड सक्षम किया गया था हमारे मशीन पर, और वास्तविक विकल्प मान रहे थे:
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75
सॉकेट में कम से कम 20 मिनट में समय-समाप्त होगा जिसका मतलब है, मेरा मानना है। लेकिन आश्चर्यजनक रूप से, हमारी प्रक्रियाओं को 10 सेकंड से भी कम समय में {tcp_error, Socket, etimedout}
प्राप्त हुआ।
मैं सोच रहा था, काउंटर इसे gen_tcp:send(...)
संचालन द्वारा ट्रिगर किया जाएगा? और फिर मुझे यह असंभव लगता है क्योंकि प्रेषण परिचालन सभी तुल्यकालिक थे, वे तत्काल विफल हो जाएंगे।
तो, मेरा सवाल यह है कि etimedout
संदेश कहां से आया था? या यह वास्तव में क्या ट्रिगर किया? मैंने एरलांग वीएम के सी स्रोत के आसपास गुमराह किया, खासकर inet_drv.c
, लेकिन अभी तक कोई निष्कर्ष नहीं है।
धन्यवाद।