方法一:通过“事件查看器”查看应用程序崩溃日志步骤:打开“事件查看器”:按下Win + R键,输入eventvwr.msc ,然后按回车。...导航到应用程序日志:在左侧导航栏中展开“Windows日志” -> “应用程序”。查找崩溃相关的错误日志:在右侧窗口中查找带有“错误”标志的日志条目。...方法三:启用并查看调试日志步骤:启用调试模式(如果支持):某些应用程序允许用户启用详细的调试日志记录功能。参考应用程序的帮助文档或设置菜单以启用此功能。触发崩溃问题:重现导致崩溃的操作。...导航到以下路径:计算机配置 -> 管理模板 -> Windows组件 -> Windows错误报告 启用崩溃转储文件生成:配置“启用内存诊断”策略以确保系统在崩溃时生成内存转储文件。...方法六:联系应用程序的技术支持步骤:收集所有相关信息:包括错误日志、崩溃时的操作步骤、系统配置等。提交问题报告:访问应用程序官方网站或联系技术支持团队,提供收集到的信息以获得进一步帮助。
相信大家都遇到过Error: read ECONNRESET这个错误,本文分享针对该错误的分析过程。...虽然通过ECONNRESET错误码我们很容易查到这个错误意味着什么,但是通过源码和分析工具进行一次彻底的分析,会让你更加了解这个错误的产生和原理。更让人神清气爽。...本文分为两个部分,首先通过nodejs源码分析这个错误产生的原因,然后通过网络工具抓包的方式捕获这个错误。...设置对应socket的错误信息为ECONNRESET,并设置状态为close。如果这时候用户执行read会怎样呢? ? read函数会直接把错误信息返回给调用方。...我们回到libuv中,当libuv调用read函数的时候,返回了错误码ECONNRESET。然后libuv执行nodejs的read_cb回调。
作者简介:五月君,Nodejs Developer,慕课网认证作者,热爱技术、喜欢分享的 90 后青年,欢迎关注 Nodejs技术栈 和 Github 开源项目 https://www.nodejs.red...,因此会在 L440 处触发一个 connResetException('socket hang up') 错误。...http client 端进行捕获放入队列发起重试,当这种错误概率很大的时候要去排查相应的服务是否存在处理很慢等异常问题。...ECONNRESET VS ETIMEDOUT 这里注意区分下 ECONNRESET 与 ETIMEDOUT 的区别 ECONNRESET 为读取超时,当服务器太慢无法正常响应时就会发生 {"code"...:"ECONNRESET"} 错误,例如上面介绍的 socket hang up 例子。
当前连接着的客户端会在程序崩溃的同时看到一个ECONNRESET错误,在NodeJS里通常会被报成“Socket Hang-up”。...记录错误,其他什么都不做。有的时候你什么都做不了,没有操作可以重试或者放弃,没有任何理由崩溃掉应用程序。举个例子吧,你用DNS跟踪了一组远程服务,结果有一个DNS失败了。...不管 NodeJS 应用程序是否被允许崩溃,网络和系统的失败已经是一个事实了。...如果你不知道会导致什么错误或者不了解错误的含义,那你的应用程序正常工作就是一个巧合。 所以,当你编写新的函数的时候,一定要告诉调用者可能发生哪些错误和错误的含义。...这样的结果使获得调用堆栈没有可能,代码也无法检查name属性,或者其它任何能够说明哪里有问题的属性。 操作失败和程序员的失误这一概念早在NodeJS之前就已经存在存在了。
3、解决方式; 4、总结; ---- 一:案例分享 1、背景 某部分客户业务使用cos的node.js的sdk来进行上传下载等操作,近期客户端偶尔触发上传文件报错{ error: { code: 'ECONNRESET...经了解: 业务的使用分块上传对象,且通过onProgress查看上传文件的进度回调函数; const COS = require('cos-nodejs-sdk-v5'); let cos = new...后触发了断开 http状态码参考 1.png 2、但是通过上传的onProgress来看进程是从0%到1%有发送数据的,并非长时间等待; 2.png 3、通过过滤多次上传log以及咨询确认我们nodejs...服务端因为在一段特定时间内没有收到任何数据,主动进行关闭了 TCP 连接; 客户端在收到 TCP 关闭的信息前,又开始主动发送了一个新的 HTTP 请求报文,需要进一步的传输数据; 服务端收到请求后直接进行了拒绝,客户端报错 ECONNRESET...总结一下就是: 服务端先于客户端关闭了 TCP,而客户端此时还未同步状态,所以存在一个错误的暂态(客户端认为 TCP 连接依然在,但实际已经销毁了) 2、对应的链路图: 正常的tcp的连接和keep
… 发送成功 totalSize = 125000 发送成功 totalSize = 130000 (lldb) 可以看到客户端发送第130001-135000个字节的时候程序在write方法处崩溃...当一个进程向某个已收到RST的套接字执行写操作时,(此时写操作返回EPIPE错误)内核向该进程发送一个SIGPIPE信号,该信号的默认行为是终止进程,因此进程必须捕获它以免不情愿地被终止; 继续修改客户端程序如下...读取失败 errno = 54 #defineECONNRESET 54/* Connection reset by peer */ 当一个进程向某个已收到RST的套接字执行读操作时,(此时读操作返回ECONNRESET...错误) 抓包信息如下: 上述情况会引发一个问题:服务器主机进程终止或者崩溃后重启,客户端在不write的情况下不会知道,read会返回ECONNRESET错误或者超时; 解决方法用select: 1....如果对端TCP发送一个RST(对端主机崩溃并重新启动),那么该套接字变为可读,并且read返回-1,而errno中含有确切的错误码; 这个问题在select详解中讲述 情况三: 修改客户端程序如下,服务端不变
本文以连接错误ECONNREFUSED为例,看看nodejs对错误处理的过程。 假设我们有以下代码 1. const net = require('net'); 2....,判断错误码 7....UV_ECONNRESET: ["ECONNRESET", "connection reset by peer"] 5. ... 6. } Node.js最后会组装这些信息返回给调用方...这就是我们输出的错误信息。那么为什么会是ECONNREFUSED呢?我们看一下操作系统对于该错误码的逻辑。 1. static void tcp_reset(struct sock *sk) 2...我们输出的正是这个错误码。
当 EventEmitter 实例中发生错误时,会触发一个 'error' 事件。...; // 抛出错误,并使 Node.js 崩溃 为了防止 Node.js 进程崩溃,可以在 process 对象的 uncaughtException 事件上注册监听器. const myEmitter...= new MyEmitter(); // 给nodejs的进程增加未捕获异常的处理,防止程序崩溃 process.on('uncaughtException', (err) => { console.error...('有错误'); }); myEmitter.emit('error', new Error('whoops!'))...EventEmitter { constructor(opt) { super(opt); this.on('error', err => { console.log('应用程序出错了
nodejs除了可以通过http模块创建服务器,还能创建客户端,类似于浏览器那样很轻松的去向别的服务器发送请求并获取响应数据。...ECONNRESET } ) } ) // 监听error事件,当请求失败时,将触发error事件的回调函数 clientRequest.on( "error", function ( err...) { if( err.code === "ECONNRESET" ){ console.log( "socket端口超时" ); }else { console.log...( "请求出错,错误代码为:" + err.code ); } } ) clientRequest.end( "再见" ); // server.js const http = require...这个中间过程,nodejs创建的代理服务器可以对数据进行相应操作,同时也可以对企业服务器提供前置保护。 <!
很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 应该用哪种方式暴露错误?.../api/domain.html https://nodejs.org/api/process.html verror模块: rich JavaScript errors https://github.com...例如nodejs应用因为一个变量undefined导致crash,这是编码错误,客户端则会接收到ECONNRESET错误,这属于操作错误,对于客户端来说应该可以预期到服务器的这个错误。...一般来说,在nodejs中,同步函数导致的操作错误是比较少见的,使用try...catch会很少,常见的是用户输入验证如JSON、解析等。 一个函数的参数、类型、预期错误、如何捕获都应该是明确的。...nodejs之前就已经有操作错误、编码错误的概念,参考这里 https://en.wikipedia.org/wiki/Assertion_%28software_development%29#Comparison_with_error_handling
仔细检查 package.json 文件中依赖项名称中的错误/错别字。...通俗地理解就是:攻击者发送一个语句模糊的请求,就有可能被解析为两个不同的 HTTP 请求,第二请求可能会 “逃过” 正常的安全设备的检测,使攻击者可以绕过安全控制,未经授权访问敏感数据并直接危害其他应用程序用户...HTTP 服务拒绝访问 很多时候,由于我们错误的代码逻辑或者错误的配置可能会导致 HTTP 服务无法访问,参考下面的代码: const net = require('net'); const server...,当发送的请求量过大时,我们的服务就会崩溃。...但是,通过 DNS 重绑定,攻击者可以暂时控制其请求的来源,使它们看起来像是来自本地 IP 地址。这是通过控制网站和用于解析其 IP 地址的 DNS 服务器来完成的。
很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 应该用哪种方式暴露错误?.../api/domain.html https://nodejs.org/api/process.html verror模块: rich JavaScript errors https://github.com...(err) { if (err) throw (err); // 直接throw if (err) callback(err); // 使用callback,nodejs中常见的异步处理方式...例如nodejs应用因为一个变量undefined导致crash,这是编码错误,客户端则会接收到ECONNRESET错误,这属于操作错误,对于客户端来说应该可以预期到服务器的这个错误。...一般来说,在nodejs中,同步函数导致的操作错误是比较少见的,使用try...catch会很少,常见的是用户输入验证如JSON、解析等。 一个函数的参数、类型、预期错误、如何捕获都应该是明确的。
很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 应该用哪种方式暴露错误?.../api/domain.html https://nodejs.org/api/process.html verror模块: rich JavaScript errors https://github.com...例如nodejs应用因为一个变量undefined导致crash,这是编码错误,客户端则会接收到ECONNRESET错误,这属于操作错误,对于客户端来说应该可以预期到服务器的这个错误。...一般来说,在nodejs中,同步函数导致的操作错误是比较少见的,使用try...catch会很少,常见的是用户输入验证如JSON、解析等。 一个函数的参数、类型、预期错误、如何捕获都应该是明确的。...nodejs之前就已经有操作错误、编码错误的概念,参考这里 https://en.wikipedia.org/wiki/Assertion_(software_development)#Comparison_with_error_handling
会进入vio_io_wait函数 poll() 等待唤醒或者超时 104代表ECONNRESET,在客户端服务器程序中,客户端异常退出,并没有回收关闭相关的资源,服务器端会先收到ECONNRESET错误...,然后收到EPIPE错误。...返回1160错误码 110代表ETIMEDOUT,一般设置了发送接收超时,遇到网络繁忙的情况,就会遇到这种错误。且poll超时时会设定errno为110。...服务器 send() 数据,因为客户端已经崩溃,服务器收不到ACK自然会不停的重传。...如果服务器不理会这个错误,再次调用 send() ,则立马返回Broken Pipe错误。 当前操作系统的配置为6,通常配置为6或者15,6次的超时时间大约在26-27s左右。
很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 1、应该用哪种方式暴露错误?...一些基础知识 抛出错误的几种方式: 捕获错误 分类错误 一般来说,我们将错误简单的分为两种类型:操作错误、编码错误。...例如nodejs应用因为一个变量undefined导致crash,这是编码错误,客户端则会接收到ECONNRESET错误,这属于操作错误,对于客户端来说应该可以预期到服务器的这个错误。...一般来说,在nodejs中,同步函数导致的操作错误是比较少见的,使用try...catch会很少,常见的是用户输入验证如JSON、解析等。...3、nodejs之前就已经有操作错误、编码错误的概念,参考这里 https://en.wikipedia.org/wiki/Assertion_(software_development)#Comparison_with_error_handling
二、pm2守护Nodejs 简介 pm2是nodejs的一个带有负载均衡功能的应用进程管理器的模块,类似有Supervisor,forever,用来进行进程管理。...info 0 #查看进程详细信息,0为PM2进程id 停止 pm2 stop all #停止PM2列表中所有的进程 pm2 stop 0 #停止PM2列表中进程为0的进程 三、pm2启动脚本 由于公司的Nodejs...cwd:应用程序所在的目录 script:应用程序的脚本路径 log_date_format: error_file:自定义应用程序的错误日志文件 out_file:自定义应用程序日志文件 pid_file...merge_logs: exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群)...,默认是fork autorestart:启用/禁用应用程序崩溃或退出时自动重启 vizion:启用/禁用vizion特性(版本控制) test.sh #!
如果幸运的话,你的代码可能会崩溃并显示一条明显的错误消息。如果你不走运,你的应用程序还是能运行的,但是最后的结果就不尽人意了。 什么是调试? 调试是修复软件 Bug 的艺术。...语法错误 当你的代码没有遵循语言的规则时,就会导致错误。通常,它可能是语句拼写错误或缺少括号。...运行时错误 当应用程序执行时,运行时错误变得很明显。...众所周知,运行时错误最难以复现,因此良好的日志记录必不可少。 Node.js 调试环境变量 操作系统中设置的环境变量可以控制 Node.js 应用程序的设置。.../an-introduction-to-debugging-in-nodejs/#debugging-nodejs-apps-with-chrome https://nodejs.org/api/cli.html
未捕获异常的程序 下面展示了一段简单的应用程序,如下所示: const http = require('http'); const PORT = 3000; const server = http.createServer...进程崩溃退出之后导致整个应用程序也将崩溃,左侧是一个延迟的响应,也将无法正常工作。 这是一个头疼的问题,不要紧,下文我们将会学到一个优雅退出的方案。...进程崩溃优雅退出 关于错误捕获,Node.js 官网曾提供了一个模块 domain 来实现,但是现在已废弃了所以就不再考虑了。...Promise 错误信息。...Reference nodejs.cn/api/process.html www.npmjs.com/package/graceful
许多人都有这样一种映像,NodeJS比较快; 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务; 它比较适合对并发要求比较高,而且简单的业务场景。 ...事实上NodeJS里程确实有“脆弱”的一面,单线程的某处产生了“未处理的”异常确实会导致整个Node.JS的崩溃退出,来看个例子, 这里有一个node-error.js的文件: var http...,他们都是回调函数,而回调函数中是唯一会让Node在运行时崩溃的地方。...守护NodeJS进程和记录错误日志 现 在已经基本上解决了Node.JS因异常而崩溃的问题,不过任何平台都不是100%可靠的,还有一些错误是从Node底层抛出的,有些异常 try/catch和uncaughtException...面对这种情况,我们就应该为nodejs应用添加守护进程,让NodeJS遭遇异常崩溃以后能马上复活。 另外,还应该把这些产生的异常记录到日志中,并让异常永远不再发生。
领取专属 10元无门槛券
手把手带您无忧上云