मैं नोडज में टीसीपी सर्वर लागू कर रहा हूं जो जीपीएस उपकरणों से कनेक्शन स्वीकार करता है और कोड की निगरानी हमेशा के लिए की जा रही है। कोड क्रैश नहीं हो रहा है लेकिन निश्चित समय के बाद सर्वर कोई नया कनेक्शन स्वीकार नहीं कर रहा है। एक बार जब मैं सर्वर को पुनरारंभ करता हूं तो यह फिर से ठीक काम करता है। मुझे कोई सुराग नहीं है कि क्या गलत है। ओएस उबंटू 14.04। किसी भी मदद की सराहना की जाती है।

संपादित करें:

जिस समय के बाद सर्वर कनेक्शन स्वीकार नहीं कर रहा है वह लगभग 6 दिन है।

net.createServer(function(sock){
    sock.on('data',function(data){
         //converting data to ascii.
         //parsing data,doing calculation
         //fetching user_id from redis.(i will get device id from gps device, there are user_id associated to device ids). 
         //posting to api using rest-client

    });
});

2 संपादित करें: क्या वर्चुअल मेमोरी के आकार के साथ कुछ भी है। वर्चुअल मेमोरी का आकार लगभग 940mb है। ?

2
user3508612 28 फरवरी 2016, 13:33
'एक निश्चित समय' क्या है? और क्या आप इस मुद्दे को एक सरल कोड उदाहरण के साथ पुन: पेश कर सकते हैं? क्या आप इसे पोस्ट कर सकते हैं? इसका समाधान खोजना मुश्किल है, क्योंकि हम आपसे कम जानते हैं
 – 
mcont
28 फरवरी 2016, 14:05
कोड की आउट लाइन और समय की जानकारी जोड़ी गई जिसके बाद कनेक्शन स्वीकार किए जा रहे हैं
 – 
user3508612
28 फरवरी 2016, 14:17

1 उत्तर

सबसे बढ़िया उत्तर

मैंने एक ही प्रकार की प्रणाली को दूर करने का काम किया है, इसलिए इस प्रश्न में मेरे लिए कुछ विषाद है। आपकी समस्या है फाइल डिस्क्रिप्टर:

यूनिक्स और संबंधित कंप्यूटर ऑपरेटिंग सिस्टम में, एक फाइल डिस्क्रिप्टर (एफडी, कम बार-बार फिल्ड्स) एक अमूर्त संकेतक (हैंडल) होता है जिसका उपयोग फ़ाइल या अन्य इनपुट / आउटपुट संसाधन, जैसे कि पाइप या नेटवर्क कनेक्शन तक पहुंचने के लिए किया जाता है।

फिर, आपको अपने linux सर्वर में इस फ़ाइल डिस्क्रिप्टर सीमा को निम्नानुसार बढ़ाने की आवश्यकता है:

कर्नेल पैरामीटर फ़ाइल /etc/sysctl.conf संपादित करें। इसमें लाइन fs.file-max=[new value] जोड़ें।

 vim /etc/sysctl.conf

 fs.file-max = 500000

परिवर्तन लागू करें:

sysctl -p

यूलिमिट सेटिंग बदलने के लिए /etc/security/limits.conf फाइल को एडिट करें और हार्ड और सॉफ्ट लिमिट सेट करें।

vi /etc/security/limits.conf
* soft nofile 90000
* hard nofile 90000

परिवर्तन लागू करें:

reboot

अब निम्न कमांड का उपयोग करके नई सिस्टम सेटिंग्स का परीक्षण करें:

#ulimit -a
open files (-n) 90000

वर्तमान खुली फ़ाइल डिस्क्रिप्टर सीमा की जाँच करें:

# more /proc/sys/fs/file-max
500000

टिप 1: यह पता लगाने के लिए कि वर्तमान में कितने फाइल डिस्क्रिप्टर का उपयोग किया जा रहा है

# more /proc/sys/fs/file-nr

टिप 2: प्रत्येक सप्ताह आपको सॉकेट सर्वर (नोड.जेएस ऐप) को पुनरारंभ करने के लिए एक कॉन्जॉब जोड़ें। आशा है ये मदद करेगा।

0
HCarrasko 7 मार्च 2016, 15:28
धन्यवाद @ हेक्टर। सर्वर को पुनरारंभ किए बिना कोई रास्ता है।
 – 
user3508612
29 फरवरी 2016, 15:44
आपका मतलब फाइल डिस्क्रिप्टर सीमा बदलना है? दुर्भाग्यवश नहीं
 – 
HCarrasko
29 फरवरी 2016, 15:52