我的电子邮箱不断能收到麻烦我进行疑难排查的邮件。很多案例看起来似乎没有办法解决,但是其实际上最后使用几个简单的步骤就可以有效解决或者避免问题发生。我已经通过超过400页的 PowerPoint 幻灯片积累了数以百计的这种类型的案例,让我可以有很多材料供我在博客上发表,以及之前在许多大型业界会议上进行主题为“无解的案例(Case of the Unexplained)”的系列演说。

我总是通过一些不起眼的工具和独特的疑难排查技术来寻找新的案例,越多越好。今天,我要向大家介绍一个很棒的案例,其中要用到两个非常有用的工具:Sysinternals Process Monitor 用来对比正常系统和问题系统的系统日志信息,Sysinternals PsExec 用来捕获登录过程中的活动。

问题是这样的,有一家大型企业的系统管理员了解到,很多员工都在抱怨系统登录太慢了,往往超过3分钟。虽然在登录之后没有任何问题,但漫长的登录过程让人很受伤,并且许多使用同一套软件配置的用户都会遇到该问题。为了准确找出原因,管理员调取了网络配置数据库中的信息,证明遇到问题的系统无一例外都是 Dell Precision 670 工作站。这位管理员认为自己已经找到了主要的线索,直到后来他发现,有一些采用完全相同配置的 Dell Precision 670 工作站却没有任何问题。

为了找出真正的线索,接下来他要试图去分析那些登录缓慢的系统。他通过 PsExec 工具,以 Local System 帐户身份运行了 Process Explorer 程序,这样即使注销帐户,程序也可以一直运行,直到下一次登录。因为运行的系统是 Windows XP,因此只需执行以下命令即可(Windows Vista 以上版本请看文末对此的介绍):

psexec –sid c:\sysint\procexp.exe

“-s”参数指定 PsExec 以 Local System 帐户的身份运行,“-i”使该进程连接到交互式桌面,这样用户才可以看到其窗口,“-d”让程序自动返回,而不需要等到进程终止。需要注意的是,如果启用了“快速用户切换”,并且没有登录到会话 0,那就不要注销,而是直接切换用户,登录到有问题的帐户,然后切换回启动 PsExec 的那个帐户。

在随后的登录中,他注意到公司内部的业务程序 Lisa_client_7.0.0.0.exe 会在很短的时间内占用很高的 CPU,然后持续三分钟空闲,最后退出,在这之后,登录过程恢复正常:

在 Process Monitor 取代 Filemon 和 Regmon 两个工具之前,David Solomon 有一句话:“要是有疑问,那就运行 Process Monitor 吧!”(我十分赞同这句话,甚至在我女儿来问我关于家庭作业的问题时,我都会让她运行 Process Monitor)。这是讲这种观念应用到实际生活中的很好的示范,因为看起来 Process Monitor 并不能直接告诉你某个进程停止响应的原因,但是管理员仍然会使用它。

启动 Process Monitor 并监视了一次登录过程之后,管理员从最顶部开始分析起来。由于在 Process Explorer 观察到了上述现象,Lisa_client 是首要嫌疑对象,因此他右键单击进程名称,从右键菜单中选择了“包含”快速筛选命令,以便去除与其他进程活动相关的内容:

在通过 Process Monitor 排查无响应的问题时,大家应该首先看看在停止响应的时间段,某些操作是否存在时间间隙。你可以通过将“时长”数据列添加到显示界面,来寻找持续时间过长的操作,并且需要过滤掉平时就不太能立即完成的操作,例如目录更改通知。这种方法对于有多个线程,并且在引起无响应问题的操作时,某些操作又正常进行,很难看到时间延迟的进程来说,这种方法非常有效。

令他非常惊讶的是,这种方法让他很快就找到了一个不仅正好具有3分钟时间间隙,并且还带有不正常退出代码 IO DEVICE ERROR 的事件:

该事件表明,Lisa_client 进程对包含 C: 卷的磁盘执行了一个 SCSI 直通命令,在三分钟之后遇到硬件错误超时错误。为了了解正常启动的那些 670 计算机上该命令的执行结果,他同样进行一次捕获,发现该操作在那台计算机上只花了不到 1 毫秒的时间,并且成功执行:

这个证据清楚的指明,安装在一部分 670 系统中的硬盘有硬件问题,因此,他收集了所有 670 计算机上的磁盘类型, 试图将它们与报告的登录缓慢问题联系起来。最终发现,所有登录缓慢的系统使用的都是希捷硬盘,而其他系统使用的是富士通硬盘。

公司当然不希望只是因为自己的业务程序引起的问题而更换这些硬盘,因此管理员必须找到一个解决方案。他将该问题报告给了 Lisa_client 开发团队,得到的反馈是他们可以在不影响功能的情况下去掉此命令,不过可能需要几天时间让此次更新通过他们的内部发布流程。相比几天时间不能收集某些系统的信息,员工的工作更为重要,因此管理员写了一段 WMI 登录脚本,查询系统硬盘型号,仅当不是希捷硬盘时才去启动 Lisa_client。

如果没有 Process Monitor 的帮助,他也许同样可以发现硬盘是这些系统的主要差别,但是却不能保证他可以发现根本原因,并且采取补救措施,而不是完全替换掉硬盘。好了,这又是一次使用 Process Monitor 解决问题并且深入探查问题根源的案例。

最后,我要讲一讲之前提到的如何在 Windows Vista 及更高版本的系统中配置一个应用程序,使其不受登录和注销的影响。之前为 Windows XP 提供的 PsExec 命令对较新的操作系统是无效的,因为 Windows Vista 引入了 会话0隔离特性,需要其他命令以保证启动的应用程序在的登录之后可用。

首先,在提升权限的命令提示符中使用 PsExec,在会话0中启动该程序:

psexec –sd –i 0 c:\sysint\procmon.exe

你将看到一个名为“交互式服务对话检测”的窗口在任务栏闪动,说明有一个带有窗口的程序正在隐藏的会话0桌面上运行。单击任务栏上的该窗口可以还原该通知对话框,然后单击“为我显示该消息”按钮以切换到该桌面:

这时你就可以看到启动的程序,并且配置你需要的设置(该程序运行在 Local System 帐户,因此不包含你的帐户的默认设置)。完毕之后,单击“返回”按钮回到主桌面。现在,你就可以注销然后再次登录,以便重现遇到的问题了。再次登录之后,执行下列命令可以让会话0桌面的入口提示重新出现:

net stop ui0detect 
net start ui0detect

好了,返回会话0桌面去查看已经捕获到的信息即可。

本文转自wbpluto 51CTO博客,原文链接:http://blog.51cto.com/wbpluto/536992,如需转载请自行联系原作者

[译]Windows 登录时间太长的案例相关推荐

  1. win10 更新计算机时间,win10更新时间太长怎么回事_windows10更新时间太久解决教程...

    在使用win10系统的时候,经常会需要电脑进行更新,而我们会发现每次更新都会耗时1-2个小时时间.让人等的不耐烦,遇到win10更新时间太长怎么回事呢?接下来给大家分享一下windows10更新时间太 ...

  2. 苹果电脑开机长android,苹果笔记本开机白屏时间太长

    朋友,我的现在用"优化大师"优化了,开机才用:"13秒"! 1.电脑开机时间太长(建议你关机重启),或一次打开的网页过多,造成电脑"超载运行" ...

  3. Systemctl stop XXX 时间太长

    一.背景 假如我们自己开发了一个系统,例如web,想要通过systemd来控制.但使用过程中,出现了问题,systemctl stop XXX 的时间太长了. 二.问题原因 先说结论:我们的系统停止的 ...

  4. spark SQL读取ORC文件从Driver启动到开始执行Task(或stage)间隔时间太长(计算Partition时间太长)且产出orc单个文件中stripe个数太多问题解决方案...

    1.背景: 控制上游文件个数每天7000个,每个文件大小小于256M,50亿条+,orc格式.查看每个文件的stripe个数,500个左右,查询命令:hdfs fsck viewfs://hadoop ...

  5. Android 系统(161)---N/O版本上图库打开一张图片,图片从模糊到清晰的时间太长

    N/O版本上图库打开一张图片,图片从模糊到清晰的时间太长 与M版本比较,N版本上进图库打开一张图片,图片从模糊到清晰的时间太长 N上Google默认没有多线程encode而只有单线程encode,导致 ...

  6. java压缩mp4大小_压缩的mp4视频播放时间太长(exoplayer)

    视频(mp4)从Android摄像头录制并发送到后端,这里我使用ffmpeg包装器压缩视频[44mb视频到5.76mb] . 压缩效果很好,但是当我在android(exo播放器)发送视频播放时,开始 ...

  7. 【幻灯片制作软件】Focusky教程 | 帧的播放时间太长,该如何调整?

    (Focusky动画演示大师简称为"FS软件")设置适当的帧的播放时间能有效地展示内容,达到更好的演示效果.但如果帧的播放时间太长,所有演示动作完成后,还需等待一段时间后才能播放下 ...

  8. 计算机启动时间过长,开机时间太长怎么办【图解】

    现在人们生活娱乐.工作.学习都会或多或少的用到电脑,在电脑被使用越发频繁的今天,电脑出现的问题也就相应得多了,最常见的问题之一就是电脑的开机时间太长,导致的原因可能是因为电脑的使用时间太久了,当然,也 ...

  9. 您的技术面试是否时间太长了?

    根据stackoverflow招聘专栏介绍:人事任用与解聘通常是在这样的信念下运作的,即最好缓慢招聘并快速解雇.因为用人单位想要精挑细选,并在第一时间雇佣合适的人,所以这种心态在纸面上非常有意义.当然 ...

最新文章

  1. H5之audio标签放音兼容所有浏览器方法
  2. C语言嵌入式系统编程修炼之内存操作
  3. 【转】HttpModule和HttpHandler(续)
  4. 试图运行项目时出错:无法启动调试 没有正确安装调试器
  5. win7 IIS7 HTTP 错误 404.2 - Not Found的解决方法
  6. Silverlight2.0下载地址
  7. html选择地区代码,37款城市地区选择器html代码_简约干净
  8. Android倒计时实现及Timer和TimerTask的使用
  9. STM32系统定时器闪烁LED灯
  10. 归因分析:淘宝直播数据助理及其价值研究
  11. HWDB1.1数据集 | 手写汉字数据集 |.gnt 转换 .png格式图片| 【❤️有效转换❤️】
  12. 串口转 HID 键盘鼠标芯片 CH9329
  13. 测试网络SNMP连接的几个方法(我平时调试SNMP程序时用到的几个解决方案)
  14. sqlite3数据库损坏修复
  15. python简单程序实例-python简单项目实例
  16. Mybatis的Spring集成、Aop整合
  17. 一个即将走向社会的软件技术专业学生的感想
  18. 2017 android平板,苹果2017款iPad评测:史上性价比最高的体面iPad平板
  19. Linux之I2C驱动
  20. cmake错误:CMake Error: CMake can not determine linker language for target

热门文章

  1. [20150508]列顺序问题.txt
  2. groovy环境搭建,配置报错
  3. ubuntu mysql lessons
  4. 跨库事务处理 spring+hibernate+struts2+jta
  5. 老杨和驳客都在胡言乱语——千条道理不如一个事实
  6. Git 存在多个漏洞,开发人员应及时更新
  7. 微软称伊朗国家黑客攻击美国国防技术公司
  8. 开源组件 Ehcache中被曝严重漏洞,影响多款Jira产品
  9. Python并行编程(四):多线程同步之condition(条件变量)实现带有缓冲区的生产者-消费者模型...
  10. 解决 Laravel/Lumen 出现 Please provide a valid cache path 问题