50、深入解析:ASP.NET 追踪与 Windows 服务器故障排查全攻略

深入解析:ASP.NET 追踪与 Windows 服务器故障排查全攻略

在进行ASP.NET开发和Windows Server 2008服务器管理时,故障排查是一项至关重要的技能。本文将详细介绍ASP.NET追踪功能的使用,以及一套通用的故障排查方法“RIFT”,同时还会介绍Windows Server 2008中一些内置的故障排查工具。

1. ASP.NET 追踪功能

ASP.NET的追踪功能可以帮助我们更好地调试和监控应用程序。通过以下代码可以控制追踪数据表格的可见性:

If Tracecontext.Enabled = True Then
    DataTable.Visible = True
Else
    DataTable.Visible = False
End If

此外, .NET System.Diagnostics 命名空间提供了更多的调试和追踪选项,能让我们对ASP.NET的追踪功能有更精细的控制。

需要注意的是,很多类型的错误会在页面输出之前触发,导致追踪数据无法显示。例如,未处理的编程错误会抛出500状态码,此时就需要使用ASP.NET追踪查看器来查看追踪报告,或者使用 Try...Catch 块处理错误,让程序能够正常显示追踪信息。

2. RIFT 故障排查方法

RIFT是一种通用的故障排查方法,包括四个步骤:Reproduce(重现)、Isolate(隔离)、Fix(修复)和Test(测试)。

2.1 Reproduce(重现)

在进行任何更改之前,必须先重现问题。只有亲眼看到问题,才能确认解决方案是否有效。以下是一些可能需要排查的问题示例:
- 修复抛出500状态码的故障网站。
- 解决不应出现密码提示的页面上的密码提示问题。
- 找出IIS工作进程过早失败的原因。
- 确定高CPU或内存使用率的问题。
- 排查从Web服务器到数据库服务器的连接失败问题。

为了便于后续的隔离阶段,应设置一个测试环境,在其中可以快速重现问题并进行修改,而不会影响生产环境。

2.2 Isolate(隔离)

重现问题后,就需要找出确切的原因。以下是五个用于隔离问题的技巧:
- Reproduce Trick :反复重现问题,确保每次操作前都能重现问题。
- Fail Trick :通过故意破坏故障系统,确认正在修改的内容是否正确。例如,对于抛出500错误的网站,可以停止该网站,观察错误信息是否改变。
- Only 1 Trick :尝试让问题以最简单的形式运行,例如创建一个静态HTML页面或基本的ASP.NET页面,以此来确认是否考虑了正确的因素。
- Binary Halves Isolation Trick :将问题不断拆分为两半,逐步缩小问题范围,直到找到导致故障的单个因素。
- All but 1 Trick :当认为已经确定了问题的原因时,通过移除或添加该因素,观察错误是否反转,以绝对确定问题所在。

以下是一个使用Binary Halves Isolation Trick的实际示例:

graph LR
    A[问题:网站在服务器上无法运行] --> B[重现问题]
    B --> C[移除网站级别的web.config文件,问题仍存在]
    C --> D[移除子文件夹级别的web.config文件,问题仍存在]
    D --> E[移除所有app_*文件夹,问题解决]
    E --> F[添加一半的app_*文件夹,问题未重现]
    F --> G[添加App_Browsers文件夹,问题重现]
    G --> H[对App_Browsers文件夹中的文件进行Binary Halves Isolation]
    H --> I[找到导致问题的文件]
    I --> J[对文件的部分内容进行Binary Halves Isolation]
    J --> K[找到导致问题的具体内容]
2.3 Fix(修复)

确定问题的准确原因后,就可以进行修复。修复过程可能由自己完成,也可能需要交给其他人处理。通常,隔离问题所花费的时间会比修复问题更多。

2.4 Test(测试)

修复问题后,需要进行测试以确保一切恢复正常。测试步骤包括:
1. 再次重现问题,确认更改确实有效。
2. 清理临时用户、文件、文件夹和笔记等。
3. 记录所学到的经验教训,以便日后参考。

3. Windows Server 2008 内置工具

Windows Server 2008提供了一些内置工具,可用于辅助IIS故障排查。

3.1 Task Manager(任务管理器)

任务管理器是管理员常用的工具之一,可以快速了解服务器的当前状态。通过右键单击任务栏并选择“任务管理器”即可打开。在“进程”选项卡中,可以添加“PID”和“Commit Size”列,方便监控进程信息。同时,勾选“显示所有用户的进程”可以查看不同用户下运行的后台进程。

3.2 Event Viewer(事件查看器)

事件查看器记录了从错误到警告再到信息通知等各种信息,是获取故障详细信息的重要来源。许多Microsoft Windows程序和第三方程序都会将错误和警告写入事件查看器。可以通过“开始”菜单的搜索框输入“Event Viewer”并按回车键来访问。

事件查看器的一些重要特性包括:
- Attach Task to This Event :可以为特定事件安排任务,使其在事件发生时触发。
- Applications and Services Logs :提供了特定应用程序或服务的详细日志信息,默认情况下,分析和调试日志是隐藏的,可以通过“视图”菜单启用。
- Subscriptions :可以集中多个服务器的事件,便于统一管理。
- Custom Views :可以创建自定义视图,方便快速访问特定的事件信息。

以下是访问事件查看器的操作步骤:
1. 点击“开始”菜单。
2. 在搜索框中输入“Event Viewer”。
3. 按下回车键。

3.3 Reliability and Performance Monitor(可靠性和性能监视器)

可靠性和性能监视器(也称为perfmon)是Windows系统中非常有价值的工具,可用于实时监控系统性能和查看历史数据。

  • Resource Overview :提供了CPU、磁盘、网络和内存四大资源的实时信息。
  • Performance Monitor :可以查看系统的实时性能数据和历史性能数据。查看实时计数器数据的步骤如下:
    1. 从左侧窗格中选择“Performance Monitor”。
    2. 点击顶部的绿色加号(+)按钮。
    3. 默认选择本地计算机,也可以指定远程服务器。
    4. 在中间左侧选择计数器,如果有多个实例,可以选择“_Total”、“ ”或单个实例。
    5. 选择计数器后,点击“Add >>”按钮将其移动到右侧窗格。
    6. 选择完所有计数器后,点击“OK”。
  • Reliability Monitor :通过每日时间线显示软件安装/卸载、应用程序故障、硬件故障、Windows故障和其他故障等事件,并为服务器分配一个索引评级,有助于预测和解决未来的问题。

此外,可靠性和性能监视器还支持创建用户定义的数据收集集、系统数据收集集,以及将实时计数器保存为模板等功能。

通过掌握这些工具和方法,我们可以更高效地排查和解决ASP.NET和Windows Server 2008中的各种问题。在实际操作中,要养成良好的记录习惯,确保能够清晰地了解每一步操作和问题的解决过程。

深入解析:ASP.NET 追踪与 Windows 服务器故障排查全攻略

3. Windows Server 2008 内置工具(续)
3.4 日志与报告相关功能
  • 数据收集集报告 :有一个新的“Reports”部分,会为每次运行的数据收集集实例保存一份报告。在过去的性能监视器版本中,需要在磁盘上维护 .log 文件,而现在所有报告都被整齐地组织起来,便于检索,且外观与以前的版本有很大不同。报告名称会放在与数据收集集名称匹配的文件夹中,文件名以运行日期命名。
  • perfmon /report :这可能是获取服务器当前状态快照最便捷的方法之一。在命令提示符或“开始”菜单的搜索框中输入“perfmon /report”,系统将启动“System Diagnostics”数据收集器 60 秒,之后会显示许多服务器资源和设置的详细报告,这对于了解系统资源的当前状态非常有价值。
3.5 警报和阈值启动

通常希望在达到某个阈值时让 perfmon 开始记录数据,而不是持续运行。例如,假设服务器的 CPU 每周会出现一次异常高峰,但在恢复之前难以捕捉到。此时可以设置一个警报条件,当阈值达到时开始记录。具体设置步骤如下:
1. 右键单击“Data Collector Sets/User Defined”。
2. 选择“New ➪Data Collector Set”。
3. 为收集器集输入一个合适的名称。
4. 选择“Create manually”单选按钮,然后点击“Next”。
5. 选择“Performance Counter Alert”单选按钮,然后点击“Next”。
6. 添加一个或多个计数器,设置它们的阈值,然后点击“Next”。
7. 根据需要选择合适的单选按钮,决定是现在还是稍后启动数据收集器集。
8. 点击“Finish”。

设置警报动作还需要额外的步骤:
1. 在左侧窗格中,选择刚刚创建的新用户定义的数据收集集。
2. 在主中心窗格中,右键单击要设置警报动作的数据收集器,然后点击“Properties”。
3. 选择“Alert Action”或“Alert Task”选项卡。“Alert Action”选项卡允许指定将条目添加到事件查看器的应用程序事件日志中,还可以指定一个数据收集集(必须是用户定义的集,但可以基于预定义集创建用户定义集)。“Alert Task”选项卡允许在警报条件触发时运行特定任务。
4. 完成后点击“OK”。

需要注意的是,警报机制会定期检查阈值,如果在单次失败后达到阈值,就会触发警报。但在正常健康的使用过程中,许多阈值经常会被触及,而系统管理员最关心的是持续的使用情况。例如,除非 CPU 持续高负载运行几秒钟,否则可能并不关心高 CPU 情况。打开任务管理器这样的操作可能会使 CPU 瞬间飙升,从而可能导致 CPU 警报阈值被触发,但实际上并没有真正的问题。因此,要注意可能存在的误报情况,这可能会导致比预期更多的记录。

3.6 查看日志数据

除了实时数据和报告,性能监视器视图还可用于查看先前保存到磁盘的性能计数器数据。操作步骤如下:
1. 按下“Ctrl + L”或点击左侧第二个看起来像冰块(实际上代表数据立方体)的图标。
2. 点击“Log files”单选按钮,然后点击“Add”。
3. 从磁盘中找到文件,点击“Open”,然后点击“OK”。

这个视图与实时视图相同,只是数据是静态的。在该视图的属性中,可以将时间范围缩小到特定的时间段。

3.7 叠加多个服务器数据

过去,要同时查看多个服务器的 perfmon 图形数据,需要将所有服务器的计数器添加到一个大型的性能监视器会话中。而在 Windows Server 2008 中,可以叠加多个窗口,使它们相互重叠显示。这在创建包含多个计数器的模板并同时在多个服务器上运行时特别有用,方便比较不同服务器之间的计数器。叠加选项仅在性能监视器的独立模式下可用,可以通过在“开始”菜单的搜索框或命令行中输入“perfmon/sys”来打开。在独立模式下,有一个新的“Compare”菜单,允许设置当前窗口的透明度并与另一个窗口对齐。具体操作是:如果打开了多个性能监视器窗口,先点击已经定位和调整好大小的窗口,然后选择要调整大小和位置的窗口,点击“Compare”,再点击“Snap to Compare”,当前选择的窗口将调整为与最近操作的窗口大小和位置一致。

4. 其他故障排查技巧
4.1 记录 NTFS 故障到磁盘

在 Windows Server 2008 及以前的操作系统中,有一个不太为人所知的技巧,即可以将所有 NTFS 磁盘故障记录到事件查看器中。这在事后排查磁盘故障时非常有帮助,因为它会在故障发生时进行记录,即使当时没有预料到会出现故障。这对于查找文件或文件夹的权限错误也很有用。具体操作步骤如下:

首先,设置本地组策略以记录失败的对象:
1. 点击“开始”菜单,选择“运行”,然后输入“gpedit.msc”。
2. 在“计算机配置”下,展开到“Windows Settings\Security Settings\Local Policies\Audit Policy”。
3. 右键单击“Audit object access”项,然后点击“Properties”。
4. 勾选“Failure”复选框,然后点击“OK”。

此外,也可以在域级别通过组策略进行设置。实际上,如果存在基于域的策略,它将覆盖此设置。

然后,为每个磁盘卷启用审核以记录所有失败:
1. 使用 Windows 资源管理器导航到“计算机”部分,使磁盘卷可见。
2. 右键单击第一个磁盘卷,选择“属性”。
3. 选择“Security”选项卡,然后点击“Advanced”。
4. 选择“Auditing”选项卡,然后点击“Edit”按钮。
5. 点击“Add”按钮,添加“Everyone”。
6. 在“Failed”列中,点击“Full Control”复选框,这将选择所有失败选项。
7. 依次点击“OK”,直到所有更改都被确认。

现在,如果在尝试访问磁盘上的某个对象时发生失败,失败的访问将被记录到事件查看器的“Security”部分。要查看这些记录,打开事件查看器,导航到“Windows Logs”下的“Security”,查找在失败尝试时出现的任何“Audit Failure”错误(事件 ID 4656)。

4.2 网络故障排查工具
  • Ping :Ping 工具通过发送数据包来测量往返目标服务器或设备所需的时间(以毫秒为单位)。它向目标服务器发送一个 ICMP“echo request”数据包,并等待回复。如果在超时时间内未收到回复,则报告为超时。Ping 还会在进行 ICMP 往返之前将 DNS 名称解析为 IP 地址,这是该工具的另一个有用功能。Ping 有大约十几个额外的参数,其中最值得关注的是“–t”,它将持续发送 ping 测试。Ping 可用于确认客户端和服务器之间的网络连接是否正常,以及连接是否稳定和快速。如果 ping 时间一致且在合理范围内,则可以确认网络不是问题的原因。但需要注意的是,并非所有 Internet 设备都会响应 ping 请求,有些设备可能会故意处于隐身模式以减少攻击面。例如,对“www.google.com”的 ping 测试通常会得到非常好的响应时间,而“www.cnn.com”则不会响应 ping 请求。
  • Tracert :与 Ping 工具类似,Tracert 工具也用于测试基本的网络连接,但它还会找出客户端和服务器之间的完整路由或路径,并对每个步骤进行 ping 测试。如果存在网络问题,Tracert 可以显示网络故障发生的位置。通常,访问一个网站或服务器需要经过 Internet 上的多个跳点,如果出现问题,通过 Tracert 测试通常很容易发现问题所在。
  • PathPing :PathPing 实际上是 Ping 工具和 Tracert 工具的结合,并包含一些额外的统计信息。它在查看两台计算机之间的网络路径以发现导致缓慢或故障的原因时特别有用。PathPing 是系统自带的工具,默认已安装。要获取详细帮助,可以在命令提示符中输入“pathping /?”以列出九个可能的参数。例如,执行“pathping google.com”将显示客户端服务器与被路由到的“www.google.com”数据中心之间的网络连接情况。

以下是这些网络故障排查工具的简单对比表格:
| 工具名称 | 功能描述 | 常用参数 |
| ---- | ---- | ---- |
| Ping | 测量往返目标服务器或设备的时间,解析 DNS 名称,确认网络连接 | -t(持续发送测试) |
| Tracert | 找出客户端和服务器之间的完整路由,对每个步骤进行 ping 测试,定位网络故障位置 | 无 |
| PathPing | 结合 Ping 和 Tracert 功能,包含额外统计信息,用于发现网络缓慢或故障原因 | /?(获取详细帮助) |

掌握这些工具和方法可以更高效地排查和解决各种故障问题。在实际操作过程中,要养成良好的记录习惯,确保能够清晰地了解每一步操作和问题的解决过程,同时不断积累经验,提高故障排查的能力。

内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导仿真实践,利用人工神经网络对复杂的非线性关系进行建模逼近,提升机械臂运动控制的精度效率。同时涵盖了路径规划中的RRT算法B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模ANN求解方法;②理解拉格朗日-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿高精度轨迹跟踪控制;④结合RRTB样条完成平滑路径规划优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析神经网络训练,注重理论推导仿真实验的结合,以充分理解机械臂控制系统的设计流程优化策略。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值