我的电子邮箱不断能收到麻烦我进行疑难排查的邮件。很多案例看起来似乎没有办法解决,但是其实际上最后使用几个简单的步骤就可以有效解决或者避免问题发生。我已经通过超过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. php动态生成apk渠道包,Android自动生成渠道包
  2. C#dC# 简单网页外挂实例
  3. leetcode || 50、Pow(x, n)
  4. 数据结构和算法(02)---字符串(c++)
  5. error while loading shared libraries: libiconv.so.2: cannot open shared object file
  6. 创建一个dynamics 365 CRM online plugin (三) - PostOperation
  7. watch监控,对比新值和旧值做出相应判断
  8. 让人死去活来的cocos2d-x安卓开发环境搭建(windows+eclipse+ndk 不用cygwin)【上图】
  9. fpga pcie转串口驱动
  10. 华东师大计算机专业非全日制,2018年华东师范大学非全日制研究生专业目录
  11. 启动spark- sqI时:Error: A JNI error has occurred, please check your installation and try again Exceptio
  12. Rectangling Panoramic Images via Warping算法要点分析
  13. VO的实际应用;后端接收前端传入的值;实体类转化VO;PO,VO,DTO,BO,DAO,POJO区别
  14. Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
  15. 步进电机基础(2.6)-直线步进电机
  16. sql server数据库事务日志已满请参阅log_reuse_wait_desc怎么解决?
  17. JZOJ3481. 【NOIP2013模拟10.23】君と彼女の恋(2017.10B组)
  18. All in 企业微信两年,微盛增长启示录:把自己作为方法 | 深谈
  19. 微信小程序—自定义(城市选择)弹窗组件,将弹窗组件的值传给调用页面并显示(图文)
  20. mysql 详解YEAR() MONTH() DAYOFMONTH()日期函数

热门文章

  1. ElasticSearch 2 (16) - 深入搜索系列之近似度匹配
  2. Windows Nano Server VHD文件制作
  3. 使用JavaMail技术发送邮件
  4. MVC Tutorial Movie DIY
  5. 接管任意微软账户并获$5万赏金的故事
  6. 哭!有人偷了我的漏洞报告,还冒领了奖金!
  7. CIA 数据泄露事件报告出炉:光为他人做嫁衣,自家着火不自知
  8. java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用
  9. Spring boot入门(三):集成AdminLTE(Freemarker),结合generate代码生成器,利用DataTable和PageHelper分页...
  10. 用脚本整理Leetcode题解