的NodeJS:错误:在TCP.onStreamRead读ECONNRESET(内部/ stream
使用轮询像下面以检查文件的内容被改变,那么,另外两个函数的调用
var poll_max_date=AsyncPolling(function (end,err) { if(err) { console.error(err); } var stmp_node_id=fs.readFileSync(path.join(__dirname,'node_id'),"utf8"); console.log("--------loaded node : "+stmp_node_id); if(druid_stmp_node_id!=stmp_node_id) { // MAX DATA CUT-OFF DRUID QUERY druid_exe.max_date_query_fire(); // // DRUID QUERY FOR GLOBAL DATA druid_exe.global_druid_query_fire(); druid_stmp_node_id=stmp_node_id; } end(); }, 1800000).run();//30 mins
它的做工精细了一段时间,但随后得到以下错误,如后4 - 5小时:
events.js:167遥儿; //未处理的“错误”事件^
错误:在TCP.onStreamRead读ECONNRESET(内部/ stream_base_commons.js:111:27)在发射的 '错误' 事件:在emitErrorNT在emitErrorAndCloseNT(内部/流/ destroy.js:82 8)(内部/流/破坏。 JS:50:3)
使用fs.watch监控的文件,而不是像下面轮询变化的尝试:
让md5Previous = NULL;让fsWait = FALSE;
fs.watch(dataSourceLogFile,(事件,文件名)=> {如果(文件名){
if (fsWait) return; fsWait = setTimeout(() => { fsWait = false; }, 1000); const md5Current = md5(fs.readFileSync(dataSourceLogFile)); if (md5Current === md5Previous) { return; } md5Previous = md5Current; console.log(`${filename} file Changed`); // MAX DATA CUT-OFF DRUID QUERY druid_exe.max_date_query_fire(); // DRUID QUERY FOR GLOBAL DATA druid_exe.global_druid_query_fire(); } });
它也工作正常了一段时间,但后来得到同样的错误等之后,4 - 5小时:
events.js:167遥儿; //未处理的“错误”事件^
错误:在TCP.onStreamRead读ECONNRESET(内部/ stream_base_commons.js:111:27)在发射的 '错误' 事件:在emitErrorNT在emitErrorAndCloseNT(内部/流/ destroy.js:82 8)(内部/流/破坏。 JS:50:3)
但是,当在本地机器上,其工作运行良好。只有在远程Linux机器上运行时发生错误。
有人可以帮助我,我怎么能解决这个问题?
回答如下:
的NodeJS:错误:在TCP.onStreamRead读ECONNRESET(内部/ stream
使用轮询像下面以检查文件的内容被改变,那么,另外两个函数的调用
var poll_max_date=AsyncPolling(function (end,err) { if(err) { console.error(err); } var stmp_node_id=fs.readFileSync(path.join(__dirname,'node_id'),"utf8"); console.log("--------loaded node : "+stmp_node_id); if(druid_stmp_node_id!=stmp_node_id) { // MAX DATA CUT-OFF DRUID QUERY druid_exe.max_date_query_fire(); // // DRUID QUERY FOR GLOBAL DATA druid_exe.global_druid_query_fire(); druid_stmp_node_id=stmp_node_id; } end(); }, 1800000).run();//30 mins
它的做工精细了一段时间,但随后得到以下错误,如后4 - 5小时:
events.js:167遥儿; //未处理的“错误”事件^
错误:在TCP.onStreamRead读ECONNRESET(内部/ stream_base_commons.js:111:27)在发射的 '错误' 事件:在emitErrorNT在emitErrorAndCloseNT(内部/流/ destroy.js:82 8)(内部/流/破坏。 JS:50:3)
使用fs.watch监控的文件,而不是像下面轮询变化的尝试:
让md5Previous = NULL;让fsWait = FALSE;
fs.watch(dataSourceLogFile,(事件,文件名)=> {如果(文件名){
if (fsWait) return; fsWait = setTimeout(() => { fsWait = false; }, 1000); const md5Current = md5(fs.readFileSync(dataSourceLogFile)); if (md5Current === md5Previous) { return; } md5Previous = md5Current; console.log(`${filename} file Changed`); // MAX DATA CUT-OFF DRUID QUERY druid_exe.max_date_query_fire(); // DRUID QUERY FOR GLOBAL DATA druid_exe.global_druid_query_fire(); } });
它也工作正常了一段时间,但后来得到同样的错误等之后,4 - 5小时:
events.js:167遥儿; //未处理的“错误”事件^
错误:在TCP.onStreamRead读ECONNRESET(内部/ stream_base_commons.js:111:27)在发射的 '错误' 事件:在emitErrorNT在emitErrorAndCloseNT(内部/流/ destroy.js:82 8)(内部/流/破坏。 JS:50:3)
但是,当在本地机器上,其工作运行良好。只有在远程Linux机器上运行时发生错误。
有人可以帮助我,我怎么能解决这个问题?
回答如下: