
做IT运维的人对系统异常这四个字情绪一般分三个阶段一开始看到会慌赶紧跑过去看看得多了会烦躁心想怎么又来了烦躁到一定程度就开始想怎么从根上治它。我做了快十年的企业IT支持电脑蓝屏、服务器半夜重启、ERP软件突然连不上数据库、打印机集体罢工基本都遇到过。用户不会跟你描述详细现象他们只会说一句话系统异常了。可这个异常背后可能是网络断了可能是数据库服务挂了可能是磁盘满了也可能是内存条松了。这篇东西不绕弯子就把系统异常按真实场景拆开讲清楚最容易遇到的几类问题到底怎么看、怎么查、怎么避免反复踩坑。不管你是IT运维、ERP实施人员还是日常办公电脑经常弹窗的普通用户都能从里面拿一套直接用的排查方法。1. 被系统异常折腾之前先搞清楚异常到底分几种1.1 同样是系统异常根因可能差着十万八千里我在处理工单的时候最怕的不是问题复杂而是用户说系统异常却不给任何上下文。这个词太宽泛了所以第一步永远是归类。根据我这几年积累的经验系统异常大致可以分成四类类型典型表现常见根因硬件层面蓝屏重启、突然断电关机、异响、开机无显示内存条接触不良、电源老化、硬盘坏道、温度过高系统层面开机反复修复、更新失败、事件查看器大面积报错系统文件损坏、驱动冲突、系统更新补丁问题软件/应用层面软件打不开、连不上服务器、提示数据库连接失败数据库服务未启动、网络不通、端口被防火墙拦截、授权超限人为/假异常某个软件慢、网页打不开、邮箱收不到新邮件日常卡顿、配置不对、用户误操作、网络拥堵把问题归到对应的筐里排查方向立刻就清楚了。硬件问题你重装系统是没用的软件问题你换电源也是白搭。我见过太多同事一看到系统异常就重装系统硬盘都格式化好几轮了最后发现是内存条坏了这种冤枉路说多了都是泪。1.2 排错顺序比排错技术更重要别急着上手操作先问自己三句话影响范围有多大什么时候开始的最近动过什么这三句话能帮你省下大把时间原理跟维修电灯泡一样——灯不亮了先隔着窗户看看整栋楼是不是都黑了如果都黑了那你检查自家灯泡毫无意义是供电的问题只有别人家都亮你就这一盏不亮才轮到换灯泡。举一个真实例子。之前有同事远程接到一个工单说ERP连接异常他二话不说把服务器重启了。结果公司分部整条业务线瞬间瘫痪——那台服务器上同时跑着ERP、OA、文件共享重启一下所有应用全断。事后复盘发现问题其实只出在一个网段的交换机上网络层面的小故障跟服务器一点关系都没有。就是因为没有先界定影响范围一个本来十分钟能解决的问题硬生生搞成了全公司停摆一小时。所以我的习惯是在任何重武器动作之前先搞清楚问题边界再做判断。2. 易飞erp系统连接异常到底怎么查2.1 先搞清楚易飞的连接架构你才知道该查哪里易飞erp系统连接异常这个场景在制造业企业里太常见了。易飞是典型的C/S架构ERP系统客户端装在各业务部门的电脑上服务端是一台SQL Server数据库服务器。客户端程序要正常登录必须通过网络连接到数据库服务器的1433端口读取账套数据。所以易飞连接异常表面上提示五花八门——连接数据库失败连接超时无法登录用户过多——实际上追根溯源问题就落在两个环节上网络链路和数据库服务。客户端组件问题也有但占比小得多。理解了这条链路你排查的思路就清晰了从客户端出发顺着网络往服务器走一步步排除。有人可能不理解为什么要强调架构。我就见过一个新手易飞登录不上先跑去重装客户端装了三次没用最后查了半天发现是SQL Server服务压根没启动。如果他先明白数据流转路径打开服务管理器看一眼就能定位哪至于折腾一上午。2.2 网络、服务、会话三个层面逐个排除下面这套排查路径是我处理易飞连接异常的标准动作适用于绝大多数情况第一先ping服务器IP确认物理网络通不通。如果ping不通检查客户端网线、WiFi、交换机端口以及服务器端网络。要是跨网段还要看路由和防火墙策略。第二telnet一下数据库端口确认1433端口是否开放。这里有个常见的坑服务器能ping通但telnet 1433不通多半是服务器Windows防火墙或数据库TCP/IP协议没启用。SQL Server配置管理器里一定要确认Named Pipes和TCP/IP状态是已启用然后重启SQL服务。第三确认SQL Server服务本身在跑。打开服务管理器找到SQL Server服务看状态是正在运行还是已停止。很多ERP连接异常根因就是SQL服务因为某种原因停了双击启动就行。第四检查数据库连接数和死锁情况。SQL Server连接数满了新连接就被拒了客户端会提示连接失败。在SQL Server Management Studio里执行-- 查看当前所有连接 SELECT DB_NAME(dbid) AS DatabaseName, COUNT(*) AS ConnectionCount FROM sys.sysprocesses GROUP BY dbid; -- 查看会话详情排查阻塞 EXEC sp_who2; -- 查看活跃事务和锁 SELECT * FROM sys.dm_tran_locks WHERE resource_type OBJECT;第五如果上面都正常看看账号权限。易飞账套一般用sa账号或者专用账号连接数据库万一密码被改、账号被锁定客户端也会报连接数据库失败。检查方法很简单用同一账号在SSMS里手动登录一次登录失败就说明是账号问题登录成功就说明问题在客户端配置。我给你提个醒执行sp_who2的时候重点看BlkBy这一列如果某个会话的BlkBy有值说明它被别的会话阻塞了。阻塞时间长了会变成死锁数据库会自动选择一个会话牺牲掉这时候业务端就会收到事务已死锁之类的报错这类异常特别容易让人误判成网络问题。2.3 三个常见的易飞连接异常场景对号入座场景一提示连接数据库失败/连接超时。这种十有八九是网络不通、防火墙拦截、数据库服务停了、或者数据库账号异常。按上面五步走基本能定位。场景二提示用户过多或已达最大连接数。这是会话层面问题。SQL Server默认连接数理论上是无限但受内存和工作线程限制实际上扛不住太多并发。再加上易飞的授权连接数有限用户没正常退出、程序崩溃残留了大量死会话就会把连接占满。处理方式重启SQL服务最彻底或者用KILL命令清理僵尸会话再配合数据库层的连接池配置优化。场景三提示ActiveX组件错误或DLL注册失败。这类问题绕开了数据库是客户端组件损坏了。一般处理方式是重装易飞客户端或者重新注册相关DLL。这里给你一个骚操作先不用整个重装试试用管理员身份运行命令提示符执行regsvr32重新注册易飞安装目录下的com组件经常能救回来。2.4 怎么让连接异常变少而不是天天救火排查得再熟练也不如让问题少发生。有几个习惯我觉得很有效给服务器设置每周自动重启计划时间放在凌晨三四点业务空闲时段把累积的连接和缓存清一遍。很多ERP长期运行变慢、偶发连接异常重启一次就舒畅了。客户端不要直接连公网IP连数据库尽量走内网或专线。数据库端口暴露在公网上等于给全世界的人留了一扇门爆破扫描、暴力猜密码什么都有可能发生合规上也说不过去。给数据库账号加个密码过期策略但别设太短三个月一换比较合适同时把密码同步流程写进SOP免得换完密码全公司ERP都登不了。3. 查看系统异常关机日志从状况不明到证据确凿3.1 事件查看器是系统异常的核心取证工具相比ERP连接异常另一类让人头疼的系统异常是电脑莫名其妙自动关机、自动重启、开机提示已从异常关机中恢复。这种问题最烦人因为它不是稳定复现一旦发生用户只会告诉你我刚才在打字屏幕一下就黑了。还好Windows系统自己会记录案发现场。在Windows里一切异常关机行为都会留下痕迹这个痕迹就是事件日志。打开方式很简单按下Win R输入eventvwr.msc回车就进入了事件查看器。日常排查重点看Windows日志 - 系统。系统日志里有这几个事件ID堪称异常关机案件的目击证人事件ID含义说明41内核电力事件系统未正常关机就断电了常见于断电、电源故障、强制断电6008意外关机系统非正常关机之前肯定有不正常的断电或崩溃6005事件日志服务已启动每次开机时记一条表示系统正常启动6006事件日志服务已停止每次正常关机时记一条看到说明系统是安详离世1074系统已计划关闭有人/程序主动发起了关机可能包括自动更新后重启1001BugCheck蓝屏系统发生了蓝屏错误记录了错误代码有这几个ID在手你就能还原出系统异常关机的前因后果。6008告诉你案发时间41告诉你断电了1001告诉你蓝屏了配合对应的蓝色代码方向就出来了。3.2 实操一步步捡起异常关机的证据第一步打开事件查看器进入Windows日志 - 系统。右侧点筛选当前日志事件ID栏填入41,6008,1074,6005,6006,1001事件时间范围拉到异常发生前后的几天。第二步按时间排序找到6008或41事件记下发生时间。比如用户说昨天晚上10点多电脑自己关机了你就找10点前后的6008事件看是哪一秒断电的。第三步如果同一时间段存在1001事件说明是蓝屏导致的异常关机那你得去C:\Windows\Minidump目录下找dump文件。这个文件是系统崩溃时的内存快照可以用Windbg等工具分析出到底是哪个驱动或模块出错了。第四步对比6008发生时间点和当天的其他系统日志。如果6008之前一大片Disk报错大概率是硬盘读写出了严重问题如果6008之前都是正常的什么前兆都没有那就是外部供电断的比如停电、电源线松了、电源老化。我处理过的一个典型案例公司一台文件服务器连续一周每天凌晨2点左右重启白天正常。用户天天抱怨但谁也没找到原因。我去翻事件日志发现每天凌晨1点58分左右都有一次6008事件紧接着就是电源相关的41事件。再往前翻前一天的1点57分会有一条Disk错误指向磁盘读写超时。排查到这里基本锁定两个方向电源和硬盘。后来换了服务器电源问题再也没出现过。如果只靠眼睛看、靠手摸根本查不到这种间歇性的问题。3.3 相关事件ID组合能看出更多门道很多人觉得看日志很难其实你只需要记住一个核心思路看组合不要看单条。单条6008只能说明异常关机了但配合6005和6006就能判断系统上次是否正常关机配合41能判断是不是强制断电配合1001能判断是不是蓝屏。举个例子。如果日志里显示6006出现在昨晚22:00然后6005出现在今天早上9:00中间还有1074事件这说明系统昨晚是被人主动关机的今早正常启动这压根不是异常是用户自己关了电脑。如果单看6005而不看6006很容易误判成异常重启。还有一个小技巧Windows有一个可靠性监视器用起来比事件查看器直观得多。Win R输入perfmon /rel它会用时间线的方式展示系统的稳定性变化蓝屏、软件崩溃、断电都会变成红色感叹号标在对应日期上。遇到小白用户不会描述问题时我经常直接让他打开这个页面截图发给我比自己一通瞎猜强多了。3.4 常见蓝屏代码一眼猜个大概蓝屏代码能帮你快速缩小排查范围但别指望它直接给你答案。这里列几个我平时判断用的高频代码蓝屏代码常见方向优先检查0x0000001A内存相关问题内存条、驱动0x00000050内存访问异常驱动、内存、杀毒软件冲突0x0000007E系统进程崩溃驱动、系统文件、硬件0x0000000A内核层错误驱动不兼容、硬件故障0x000000D1驱动访问异常网卡/显卡驱动0x000000ED磁盘I/O错误硬盘坏道、数据线看到0x000000ED优先去测硬盘健康度用CrystalDiskInfo看05、C5、C6这几个SMART值看到0x0000001A优先拔插内存条或者用MemTest跑一遍。当然最终结论还是要看dump文件蓝色代码只是一个入手方向。4. 现场排查系统异常时特别容易踩的坑4.1 看到系统异常就重装问题自然反复横跳重装系统、重装软件是解决系统异常最粗暴的方式但也是隐患最大的方式。很多问题装完就好了过几天又犯因为根因没找出来。最典型的就是内存条坏了重装系统可以正常用一段时间等数据写入到坏的内存区域又蓝屏。用户以为是自己使用不当其实是硬件问题再怎么重装都白费。正确的做法是先看日志再动手。Windows的事件日志里存着所有错误的来龙去脉用十分钟看日志胜过花两小时重装。只有确认是系统文件彻底损坏、无法修复的情况下才考虑重装这条路。4.2 只盯应用层忽略服务器的资源和安全处理ERP连接异常的时候不少人是头痛医头看到报连接异常就觉得是网络问题反复去查交换机、网线其实是SQL Server的内存被耗光了。C/S架构的ERP系统数据库服务器的内存和CPU会随着并发用户数的增长而持续吃紧。如果服务器内存不足SQL Server会把大量时间花在磁盘交换上客户端表现就是连接超时。所以排查连接异常时一定要顺手看一眼服务器任务管理器CPU是否长期100%、内存是否接近满载、磁盘队列是否一直在高位。服务器运行资源紧张表面症状会是各种各样的系统异常你单纯查网络永远找不到真相。4.3 被同一时间段的多条报错误导系统日志里经常出现一种迷惑性极强的现象某段时间内错误条目特别密集看起来什么都在报错。新手容易抓着一个报错就开始分析。我的经验是先找时间轴上最早的异常事件因为很多后续报错只是并发症。比如电源故障导致断电重新启动后文件系统报错、服务启动失败、程序异常这些都是断电的结果不是原因。抓住元事件也就是最原始的那条才能定位真相。4.4 常见系统异常速查表最后放一个简版速查表日常遇到可以对着操作异常现象第一优先排查第二优先排查终极手段电脑频繁蓝屏看系统日志1001事件和dump文件内存/硬盘检测替换问题硬件系统自动重启电源事件41、6008检查电源/散热更换电源或改善散热ERP提示连接超时网络ping/telnetSQL Server服务状态重启SQL服务ERP提示用户过多执行sp_who2查看会话数手工KILL僵尸连接重启SQL服务软件报错但能打开查看软件日志重装软件联系软件服务商电脑卡顿但无报错任务管理器看资源占用检查硬盘剩余空间清理或升级硬件5. 一套亲测好用的系统异常排查流程与避坑心得5.1 给普通用户的三步自救法非IT人员遇到系统异常不用慌也别急着报修先做三个动作第一等一分钟。很多偶发性问题过一会儿自己就恢复了尤其是网络和服务器临时抖动不用大动干戈。之前处理过一个小姑娘的工单报系统异常登不上我还没走到她工位她自己又登上了就是瞬时网络波动。第二看周围。问一句旁边的同事你的电脑正常吗你的ERP能登录吗如果全部门都不正常那是共性问题找IT就对了只有你一个不正常那多半是你自己电脑的个例可以进行下一步排查。第三重启一次。如果你已经确认其他人都正常大概率是你本机的进程卡死了。重启电脑是成本最低的恢复动作别抵触它。很多系统异常在重启之后自然消失这不是玄学是因为系统把卡死的进程和占满的资源都清空了。5.2 给运维同事的五步排查SOP做IT最忌讳没有章法乱试一通。我自己总结了一套固定流程你可以直接抄作业第一步确认影响范围全公司还是单台电脑。 第二步查看系统日志和软件日志锁定时间点。 第三步按日志线索排查硬件、网络、服务、资源逐项排除。 第四步定位根因后进行修复优先采用最小改动方案。 第五步验证修复效果然后记录到工单或知识库方便下次直接检索。这套SOP看起来不惊艳但实际用起来效率极高。很多人觉得运维靠的是经验其实经验丰富的人做事都是从固定套路出发一步一步排除而不是凭感觉乱点。5.3 给ERP管理员的日常自查清单针对易飞这类ERP系统我给管理员列一份自查清单每周花十分钟检查一遍很多连接异常就不至于发生SQL Server服务是否正常运行启动类型是否为自动。磁盘剩余空间是否充足尤其是数据库日志文件的存放盘。数据库备份是否成功备份文件是否能正常还原。系统事件日志里是否有大量的警告和错误。服务器CPU、内存、磁盘I/O一周内的平均值。SQL Server端口1433是否被意外关闭或拦截。数据库账号密码是否临近过期。说到底系统异常不是一个能消灭的东西它只是计算机世界里的客观现象。做了这么多年IT我最大的体会是别跟系统异常斗气要跟它讲证据。改掉先重启、再重装的坏习惯老老实实打开事件查看器找到那条6008、41、1001顺着证据链去查绝大多数问题都能在半小时内定位。下次看到用户发来系统异常四个字时你要做的不是问他怎么个异常法而是先自己动手去翻日志——你要的证据其实已经在系统里等着你了。