AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 762861
Accepted
Vojtěch Dohnal
Vojtěch Dohnal
Asked: 2016-03-11 03:04:00 +0800 CST2016-03-11 03:04:00 +0800 CST 2016-03-11 03:04:00 +0800 CST

过去 14 天,域中的笔记本电脑全部随机冻结几秒钟

  • 772

我们在 Windows 域中有许多 Windows 7 x64 笔记本电脑 Dell Latitude E5550。Cca 1-2(-3?) 几周前都开始在一天中随机冻结几次,持续几秒钟。

冻结意味着 Windows 完全没有响应,numlock 灯开关工作了一段时间,然后它也停止工作,然后又恢复正常响应。整个过程非常随机地重复,冻结持续时间从几秒到最长不等。cca 20-30 秒。

我们已尝试卸载有问题的 KB3114717,但没有任何改善。使用 AVG 防病毒软件、Office 2013、Windows 7 x64。


我知道这不足以给出任何答案,但是是否有像 Sysinternals ProcessMonitor 中的设置或过滤器可以让我查看是否有 50% 或更多的 CPU 命中?


当问题发生时,perfmon 报告空白,我想这意味着它不能由任何简单的进程引起,并且必须是内核或驱动程序中的问题......?

在此处输入图像描述

从进一步分析看来,问题与Process,即以下计数器在冻结之前急剧上升:

  • 每秒分页错误
  • 每秒输入/输出数据操作
  • 每秒输入/输出读取操作的字节数
  • 每秒输入/输出读取操作

但是在 PerfMon 数据中找不到任何有关导致此问题的过程的信息。


找了几个找麻烦的人选:1E NightWatchman, 1E WakeUp Agent, Realtek Audio Service, AVG Service,有选择的去试试

windows-7
  • 3 3 个回答
  • 452 Views

3 个回答

  • Voted
  1. SimonS
    2016-03-12T01:39:57+08:002016-03-12T01:39:57+08:00

    当我需要“调试”系统故障时,我在这里编写了这个脚本来获取一些进程数据。它将在等待进程退出的 powershell 会话中创建一个后台作业

    它获取工作站上运行的每个进程的所有 GDI 对象、句柄、RAM 等信息。也许你可以尝试用这个来捕捉导致失败的过程。

    我猜由于计算机死机,explorer.exe 进程没有响应。因此,只要 explorer.exe 响应属性不正确,我们就会触发 get-data 脚本。

    只需在您想要的任何工作站上的 powershell 会话中启动此脚本。它将通过通知托盘中的气球文本可视化失败。如果您想要邮件通知,只需Send-Mailmessage在Get-MachineDataPart 后面加上一个。

    您可以在后台作业运行时使用 PowerShell。用于get-job查看作业是否真的在运行。

    详细信息将保存在 %userprofile%\ProcessDetails.txt

    Start-Job -name CatchSystemFailure {
    $sig = @'
        [DllImport("User32.dll")] public static extern int GetGuiResources(IntPtr hProcess, int uiFlags); 
    '@ 
    Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32
    [Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null
    [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
    
    function Get-MachineData(
        [switch]$AllProcessDetails,
        [switch]$RAM
        )
        {
            switch($PSBoundParameters.GetEnumerator().Where({$_.Value -eq $true}).Key)
            {
            'AllProcessDetails' {
                $processes = [Diagnostics.Process]::GetProcesses() |
                select Name, Responding, NPM, PM, WS, VM, Cpu, Handles, @{n='GDI-Objects';e={
                    [Win32.NativeMethods]::GetGuiResources($_.Handle, 0).ToString()}
                } | sort Name
                Write-Output $processes
            }
            'RAM' {
                $ComputerSystem = gwmi Win32_operatingsystem -Property TotalVisibleMemorySize, FreePhysicalMemory
                $FreePhysicalMemory = "{0:N2}" -f (($ComputerSystem.FreePhysicalMemory) / (1mb))
                $TotalVisibleMemorySize = "{0:N2}" -f (($ComputerSystem.TotalVisibleMemorySize) / (1mb))
                $TotalFreeMemPerc = "{0:N2}" -f (($FreePhysicalMemory/$TotalVisibleMemorySize)*100)
                $Memory = New-Object PSCustomObject –Prop (@{
                'Server-RAM'=$TotalVisibleMemorySize + "GB";
                'Free RAM'=$FreePhysicalMemory + "GB";
                'Free RAM in %'=$TotalFreeMemPerc + "%"
                }) | fl *
                Write-Output $Memory
            }
        }}
        while ((Get-Process system).Responding) {sleep -Milliseconds 50}
        if (!(Get-Process system).Responding) {
            $SystrayIcon = New-Object System.Windows.Forms.NotifyIcon 
            $SystrayIcon.Icon = [system.drawing.icon]::ExtractAssociatedIcon($pshome + "\powershell.exe")
            $SystrayIcon.BalloonTipText = "system failure! inform your systemadministrator!"
            $SystrayIcon.BalloonTipTitle = "Process Watcher"
            $SystrayIcon.Visible = $true
            $SystrayIcon.ShowBalloonTip(600)
            $SystrayIcon.dispose()
            Get-MachineData -AllProcessDetails -RAM | out-file $env:USERPROFILE\ProcessDetails.txt -Force
        }
    } | out-null
    
    • 1
  2. Best Answer
    Vojtěch Dohnal
    2016-03-23T02:02:12+08:002016-03-23T02:02:12+08:00

    到目前为止,我还没有找到根本原因,但是禁用了以下服务的计算机:

    • 1E 守夜人
    • 1E 唤醒代理

    现在冻结问题的数量为零。在禁用这些服务之前,它们偶尔会冻结。Input/output data operations per second在冻结发生之前,这些服务在 perfmon 中的上升。

    • 0
  3. Gnafu
    2016-03-12T01:02:22+08:002016-03-12T01:02:22+08:00

    尝试禁用 ipv6,它可能是一个已知漏洞。
    https://blog.coresecurity.com/2014/03/25/ms14-006-microsoft-windows-tcp-ipv6-denial-of-service-vulnerability/

    • -3

相关问题

  • Windows 7 总是附加 VHD

  • Windows 7 上的虚拟 PC 和网络共享

  • 在 Windows XP 上安装 Windows 7 引导加载程序

  • 如何在 Windows 中自定义管道?

  • IIS 7.5 (Windows 7) - HTTP 错误 401.3 - 未经授权

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve