“故障排查”标签的文章
带有“故障排查”标签的文章共 40 篇,按发布日期从新到旧排列。
-
Windows 共享文件夹为什么时好时坏——排查 Kerberos、NTLM 与凭据问题
通过症状和日志排查 Windows 共享文件夹时而能访问、时而无法访问的问题。说明 IP 与名称的差异、仅应用失败、空密码、1219、重启及 SMB 签名的检查步骤,以及每项结果能证明什么。
-
磁盘使用率 100% 要停掉什么才能好?──分辨 SysMain、Windows Search 与 Defender
从处理量、响应时间和文件三个角度厘清 Windows 磁盘使用率 100% 的原因。图解 SysMain 的临时停止与恢复、Windows Search 搜索范围的调整,以及不停用 Defender 的调查方法。
-
Windows 名称解析的顺序 ── hosts、DNS 缓存、LLMNR/mDNS 与 DoH
「解析不了名称」「只有部分电脑连不上」,结果取决于是 hosts、DNS 缓存、DNS 服务器还是 LLMNR/mDNS 给出的答案。本文从机制上梳理 Windows 名称解析的顺序与 DoH 改变了什么,并讲解按层排查的步骤。
-
睡眠恢复后就出故障的应用——电源事件机制与扛得住恢复的业务应用设计
打开笔记本电脑时业务应用的通信已经断开——原因是设计没有考虑睡眠。本文依据一手资料讲解 WM_POWERBROADCAST 的通知流程、Modern Standby 的行为、断开与重连的设计、睡眠抑制以及调查命令。
-
DllMain 与加载器锁——“DLL 初始化里什么都别做”的真正原因
为什么不能在 DllMain 里调用 LoadLibrary 或与线程同步。本文依据一手资料,从串行化全部 DLL 通知的加载器锁机制,讲到死锁成立的典型场景、延迟初始化等正确设计,以及挂起的调查步骤。
-
“无响应”的真相——Windows 如何判定应用卡死,以及不会卡死的设计
Windows 的“无响应”是操作系统在窗口 5 秒未取出消息时作出判定、并换成幽灵窗口的机制。本文讲解判定的内部动作、卡死的常见原因、把繁重处理移出 UI 线程的设计,以及挂起的调查步骤。
-
虚假唤醒——条件变量为什么会“没有通知也醒来”,以及 Windows 上正确的等待写法
条件变量的 wait 即使没有收到通知也可能返回(虚假唤醒)。本文从 Windows 的实现出发说明规范为何允许这一点,并用 Win32、C++ 和 C# 的代码给出以 while 循环和谓词编写的正确等待写法。
-
WPR/WPA 实战——从系统整体排查“整台 PC 变慢”的性能调查入门
“整台 PC 变慢”“开机很慢”这类任务管理器追不到的性能问题,可以用采集并阅读整个 OS 的 ETW 跟踪的 WPR/WPA 来排查。本文从 wpr.exe 的采集步骤,一直讲到在 WPA 中怎么读 CPU、等待时间和磁盘 I/O。
-
OneDrive“按需文件”与业务应用——占位符打破的前提与对策
桌面上的 CSV 读不了,导入处理以“找不到文件”中断——原因可能是 OneDrive 的 KFM 与按需文件。本文讲解占位符的机制与属性判断,以及应用端和信息系统部门各自的对策。
-
Windows 数据包捕获实务——pktmon、netsh trace 与 Wireshark 的分工
应用日志里只留下“超时”的通信故障,看一眼实际流经线路的数据包就能再深挖一层。装不了 Wireshark 的服务器也能用系统自带的 pktmon、netsh trace 采集。本文按实务步骤讲解采集与分析的分工。
-
解读 Windows 错误码——Win32 错误、HRESULT、NTSTATUS 的三层结构
出现 0x80004005 时,先分解再搜索。讲解 Win32 错误、HRESULT、NTSTATUS 的三层结构,0x8007xxxx=Win32 错误重新封装这一最重要模式,以及用 err.exe 和 PowerShell 查询的方法。
-
Windows 的“内存使用量”究竟表示什么——正确解读 Working Set、Private Bytes、Commit 与页面文件
任务管理器的内存、Working Set、Private Bytes 与 Commit 并不是同一个值。本文讲解 Windows 虚拟内存与物理内存的关系、页面文件的作用,以及排查内存不足和内存泄漏时应当关注的指标。
-
多线程实战最佳实践 Java 篇——虚拟线程时代的惯用做法
Java 多线程的惯用做法是不直接创建线程,而是交给 ExecutorService 与虚拟线程。本文梳理 synchronized 与 ReentrantLock 的取舍、基于中断的协作式停止、ConcurrentHashMap 的原子操作,直到 Swing 的 EDT 等实战原则。
-
多线程实战最佳实践 C 语言篇——以 Win32 API 的方式安全编写
C 语言 × Win32 的多线程自有定式:用 _beginthreadex 创建线程、SRW 锁与条件变量、Interlocked,以及停止事件 + WaitForMultipleObjects 的停止设计。本文还梳理 TerminateThread 的危险与 DllMain 的限制。
-
多线程实战最佳实践 C++ 篇——用 RAII 和 jthread 从结构上杜绝问题
C++ 的多线程里数据竞争就是未定义行为。本文梳理 std::thread 析构函数的陷阱、jthread 与 stop_token 的停止设计、scoped_lock 的死锁规避、atomic 的正确定位,直到与 Win32 同步 API 的区分使用。
-
多线程实战最佳实践 .NET 篇——增加线程之前必须先定好的事
面向 .NET/C# 梳理防止“线程一开就偶尔崩溃、偶尔卡死”的设计做法,涵盖不自己创建线程而依托 Task、减少共享可变状态、加锁的纪律、用 CancellationToken 设计停止流程,直到 UI 线程的处理方式。
-
卷影复制服务(VSS)的原理与实务——使用中的文件为什么还能备份
使用中的文件会因共享冲突而无法复制,备份软件为什么却能备份。本文讲解卷影复制服务(VSS)中请求程序、编写器、提供程序的分工,写时复制的原理,vssadmin 的实务操作以及差异区域的陷阱。
-
Windows I/O 底层原理(第 6 篇·完结篇)——迷你过滤器的机制与用 Procmon 排查延迟
讲解迷你过滤器监视和控制文件 I/O 的机制。梳理 FltMgr、高度、pre/post 回调与 fltmc 的读法,汇总用 Procmon 定位慢操作的步骤,以及排除项设置和 Dev Drive 的注意事项。
-
Windows I/O 底层原理(第 5 篇)——NTFS 的内部结构:从 MFT 理解文件系统
本文是图解 NTFS 内部结构的系列第 5 篇。从开发者视角梳理 MFT 与文件记录、多数据流(Zone.Identifier)、硬链接与 8.3 短名、重解析点、两种日志,以及稀疏与压缩。
-
Windows I/O 底层原理(第 1 篇)——所有读写最终都会变成 IRP:I/O 系统全貌
本文是从底层讲解 Windows I/O 系统的系列第 1 篇。用图解梳理对象管理器的命名空间,驱动程序、设备、文件这三种对象,IRP 的生命周期,直到 CloseHandle 背后的机制。
-
用 Get-WinEvent 实务排查事件日志 ── 筛选速度决定调查时间
本文整理用 PowerShell 提升 Windows 事件日志调查效率的方法,涵盖用 Where-Object 筛选为何缓慢、FilterHashtable 与 XPath 的区分使用、重启・登录・应用异常终止的调查方法,直至多台计算机的日志收集。
-
Process Explorer / Handle / VMMap 实战 ── 从此刻的状态追查挂起・泄漏・「文件正在使用」问题
这是排查「逐渐变卡」「文件删不掉」「挂起无响应」问题的 Sysinternals 实战第二弹。从实务角度讲解 Process Explorer 的句柄搜索・线程堆栈・泄漏监控列、handle.exe,以及用 VMMap 对内存构成进行切分的方法。
-
Windows的时刻同步(w32time)与业务系统 ── 从原理出发解决「日志时间戳对不上」的问题
从 Windows 时间服务(w32time)的原理出发,讲解设备与 PC 之间日志时刻偏差的成因。整理域层级结构与工作组的默认行为、w32tm 命令诊断、高精度时刻与虚拟机的注意事项,直至 Stopwatch 与 UTC 并用的日志设计。
-
注册表的32位/64位重定向与虚拟化陷阱 ── Wow6432Node与「写入的值找不到了」问题
从实务角度梳理32位应用写入HKLM\Software时被重定向到Wow6432Node的机制、UAC虚拟化转发到VirtualStore的触发条件、COM注册按位数分离带来的实际危害,直至用RegistryView、reg.exe /reg:64正确读写的方法。
-
故障处理不止于恢复 ── 写给小型开发团队的 Postmortem(再发防止)实践模板
把故障处理停留在「修复、道歉,就此结束」,同样的故障就会反复发生。本文把 blameless postmortem 翻译给小型团队使用,整理出可在 1 小时内写完的模板、再发防止策略的强度判断表,以及实施的分级(triage)标准。
-
睡眠、休眠、Modern Standby 与长时间运行应用 ── 用设计防止「夜里意外停止」
本文从 S3 睡眠、休眠、Modern Standby 的区别入手,整理长时间运行的 Windows 应用为何会出现「早上一看已经停止」的原因,并讲解睡眠期间计时器与 TCP 连接的行为,以及如何用 SetThreadExecutionState 进行抑制。
-
接手了没有源代码也没有文档的系统 ── 在不中断运行的前提下开展运维保守的实务步骤
本文整理在没有源代码、也没有文档的业务系统上开始运维与保守工作的实务步骤。涵盖对运行环境的保全与备份、可执行文件与数据库的盘点、从行为中还原规格,以及续用、封装、重建之间的判断。
-
MAX_PATH 与 Windows 路径・文件名的陷阱 ── 260 字符限制、保留名称、末尾句点、大小写
梳理导致「找不到文件」的经典原因 ── 路径与文件名的各种限制。本文解析 MAX_PATH=260 的构成、通过 LongPathsEnabled 启用长路径、CON 等保留名称、末尾句点的规范化处理,以及 Path.Combine 的陷阱。
-
网络驱动器与 UNC 路径的陷阱 ── 业务应用中处理文件服务器(共享文件夹)的实务
本文整理业务应用向共享文件夹输出、监控时的常见故障:驱动器号(Z:)为何在服务中不可见、各执行账户所需的权限、错误 1219,以及 FileSystemWatcher 的注意事项。
-
Process Monitor(ProcMon)实战指南 —— 10 分钟定位「配置未生效」「ACCESS DENIED」问题
「明明修改了配置文件却没有生效」「昨天还能正常运行,今天却突然启动不了」——在动手修改源代码之前,Process Monitor(ProcMon)可以从文件、注册表访问的实际情况入手定位原因。本文从故障排查一线的视角,讲解 Filter 的实用技巧、NAME NOT FOUND・ACCESS DENIED・SHA...
-
用 PerfView 与 dotnet-trace 定位“变慢”的原因 ── .NET 性能排查实务入门
当业务应用出现“变慢”“CPU 占满”“偶尔卡死”时,该用哪个工具看什么?本文梳理 PerfView 与 dotnet-trace 的分工、CPU 采样的解读方法(inclusive/exclusive)、用 ThreadTime 排查阻塞时间,以及与 EventSource 自定义事件的组合使用,整理出一套实务...
-
Windows 事件日志・ETW 入门 ── 让业务应用程序的日志接入操作系统标准机制
Windows 业务应用程序的日志,是不是只靠文件日志来解决?事件日志与 ETW,是运维人员和操作系统标准工具所能看到的另一层记录。本文整理三种手段的分工方式、.NET 中的写入方法、通过 EventSource 进行的 ETW 埋点、收集与排查的实务做法,以及来源未注册、日志膨胀等常见陷阱。
-
用 WinDbg + SOS 解读崩溃转储 ── 采集之后的实务分析入门
本文说明如何用 WinDbg 与 SOS 扩展实际读取已采集的 Windows 崩溃转储。内容涵盖符号路径设置、以 !clrstack、!pe、!dumpheap -stat、!gcroot 追踪异常与内存泄漏的方法、原生崩溃的 !analyze -v,以及与 dotnet-dump analyze 的使用区分,...
-
任务计划程序的任务不执行、以 0x1 结束 ── 原因排查与安全的运维设计
本文整理 Windows 任务计划程序的执行账户与登录类型、「不管用户是否登录都要运行」的含义、以 0x1 结束的典型原因、启用历史记录、防止多重启动、PowerShell 脚本的正确调用方式,直到把定期执行真正落实到运维上的设计方针。
-
委托开发 Windows 应用程序前该梳理的事项
在委托外包开发 Windows 应用程序之前,梳理现有软件改造、设备联动、COM/ActiveX、发布与更新、维护等需要注意的要点。
-
Windows 应用崩溃时保留日志与转储的设计
整理当 Windows 应用因意外异常或程序缺陷而崩溃时,应如何组合使用常规日志、最终崩溃标记、WER LocalDumps 与监控进程,以便事后能够追溯原因。
-
Windows 崩溃转储收集入门 - WER/ProcDump/WinDbg
为了追查难以复现的 Windows 应用崩溃,本文梳理 WER LocalDumps、ProcDump、MiniDumpWriteDump、WinDbg 的分工,以及运维上的注意事项。
-
用 Application Verifier 搭建 Windows 异常路径测试基础设施
梳理 Application Verifier 是什么,并结合用 Handles、Heaps、Low Resource Simulation、!htrace 搭建 Windows 异常路径测试基础设施的做法一起说明。
-
工业相机长期运行崩溃调查 - handle 泄漏篇
本文以工业相机控制应用长时间运行后突然崩溃的实际案例,从 handle 泄漏的排查方法与日志设计的角度,整理 Windows 应用长时间运行后崩溃时的排查思路。
-
TCP 重传导致工业相机通信中断的原因与排查
本文整理当 TCP 重传导致工业相机通信中断数秒时的排查方法,结合丢包、RTO、RFC1323 时间戳、Wireshark 确认要点一并说明。