首页 > 其他分享 >配置 HTTPERR 错误日志记录,不断增长会沾满C盘导致服务器停机

配置 HTTPERR 错误日志记录,不断增长会沾满C盘导致服务器停机

时间:2024-03-05 15:02:14浏览次数:158  
标签:HTTPERR HTTP 请求 错误 API 日志 C盘 客户端

配置 HTTP API 错误日志记录

HTTP \Parameters 键下的三个注册表值控制 HTTP API 错误日志记录。 这些密钥位于注册表项中: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

 备注

在 Windows 操作系统的更高版本中,配置值的位置和形式可能会更改。

必须具有管理员/本地系统凭据才能更改注册表值,以及查看或更改日志文件和包含它们的文件夹。

当 HTTP API 驱动程序启动时,将读取注册表值中的配置信息。 因此,如果更改设置,则必须停止,然后重启驱动程序以读取新值。 若要执行此操作,请键入以下控制台命令:

控制台 net stop http net start http

以下命名约定用于命名日志文件:
httperr + 序列号 + .log
示例:httperr4.log

日志文件在达到 ErrorLogFileTruncateSize 注册表值指定的最大大小时循环。 此值不能小于 1 兆字节 (MB) 。

如果错误日志记录的配置无效,或者在 HTTP API 写入日志文件时发生任何类型的失败,则 HTTP API 使用事件日志记录通知管理员未发生错误日志记录。

下表描述了注册表配置值。

注册表值说明
EnableErrorLogging 可以设置为 TRUE 以启用错误日志记录的 DWORD,或设置为 FALSE 以禁用错误日志记录。 默认值为 TRUE。
ErrorLogFileTruncateSize 一个 DWORD,指定错误日志文件的最大大小(以字节为单位)。 默认值为 1 MB (0x100000) 。

指定的值不能小于默认值。
ErrorLoggingDir 一个字符串,指定 HTTP API 放置日志记录文件的文件夹。

HTTP API 在指定的文件夹中创建一个子文件夹 HTTPERR,然后将日志文件存储在子文件夹中。 此子文件夹和日志文件接收相同的权限设置。 管理员和本地系统帐户具有完全访问权限。 其他用户没有访问权限。

以下示例是未在注册表中指定文件夹时的默认文件夹:
%SystemRoot%\System32\LogFiles

ErrorLoggingDir 字符串值必须是完全限定的本地路径。 但是,它可以包含 %SystemRoot%。 无法使用网络驱动器或网络共享。

HTTP API 错误日志的格式

通常,HTTP API 错误日志文件的格式与 W3C 错误日志相同,但 HTTP API 错误日志文件不包含列标题。 HTTP API 错误日志的每一行都记录一个错误。 字段按特定顺序显示。 单个空格字符 (0x0020) 将每个字段与上一个字段分开。 在每个字段中,加上符号 (0x002B) 替换空格字符、选项卡和不可打印的控件字符。

下表标识了错误日志记录中的字段和字段顺序。

字段描述
日期 “日期”字段遵循 W3C 格式。 此字段基于协调世界时 (UTC) 。 日期字段始终为 10 个字符,格式为 YYYY-MM-DD。 例如,2003 年 5 月 1 日表示为 2003-05-01。
时间 “时间”字段遵循 W3C 格式。 此字段基于 UTC。 时间字段始终为 MM:HH:SS 形式的 8 个字符。 例如,下午 5:30 (UTC) 表示为 17:30:00。
客户端 Internet 协议 (IP) 地址 受影响客户端的 IP 地址。 此字段中的值可以是 IPv4 地址或 IPv6 地址。 如果客户端 IP 地址是 IPv6 地址,则该地址中也包含 ScopeId 字段。
客户端端口 受影响客户端的端口号。
服务器 IP 地址 受影响服务器的 IP 地址。 此字段中的值可以是 IPv4 地址或 IPv6 地址。 如果服务器 IP 地址是 IPv6 地址,则该地址中也包含 ScopeId 字段。
服务器端口 受影响服务器的端口号。
协议版本 正在使用的协议的版本。

如果连接尚未经过足够的分析来确定协议版本,则连字符 (0x002D) 将用作空字段的占位符。

如果分析的主要版本号或次要版本号大于或等于 10,则将该版本记录为 HTTP/?.?.
谓词 谓词表示最后一个经过分析的请求。 包括未知谓词,但超过 255 个字节的任何谓词将被截断为此长度。 如果谓词不可用,则连字符 (0x002D) 用作空字段的占位符。
CookedURL + 查询 与之关联的 URL 和任何查询都记录为一个字段,该字段由问号 (0x3F) 分隔。 此字段的长度限制为 4,096 字节时被截断。

如果 (“煮熟”) 分析此 URL,则会使用本地代码页转换记录该 URL,并将其视为 Unicode 字段。

如果在日志记录时未 (“煮熟”) 分析此 URL,则会完全复制该 URL,而无需进行任何 Unicode 转换。

如果 HTTP API 无法分析此 URL,则连字符 (0x002D) 将用作空字段的占位符。
协议状态 协议状态不能大于 999。

如果对请求的响应的协议状态可用,它将记录在此字段中。

如果协议状态不可用,则连字符 (0x002D) 将用作空字段的占位符。
SiteId 未在此版本的 HTTP API 中使用。 占位符连字符 (0x002D) 始终显示在此字段中。
原因短语 此字段包含一个字符串,用于标识正在记录的错误类型。 此字段永远不会留空。
队列名称 这是请求队列名称。

以下示例行来自 HTTP API 错误日志:

控制台
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 - ConnLimit  
2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 - Hostname  
2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S  
2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond

HTTP API 日志中的错误类型

HTTP API 会记录对客户端的错误响应、连接超时、孤立请求以及错误处理的已删除连接。

以下列表标识 HTTP API 记录的错误类型:

  • 对客户端的响应
    HTTP API 向客户端发送错误响应,例如,由上次收到的请求中的分析错误导致的 400 错误。 HTTP API 发送错误响应后,它将关闭连接。

  • 连接超时
    HTTP API 超时连接。 如果连接超时时请求处于挂起状态,则使用该请求在错误日志中提供有关连接的详细信息。

  • 孤立请求
    当仍有排队的请求路由到该进程时,用户模式进程意外停止。 HTTP API 会记录错误日志中的孤立请求。特定错误类型由“原因短语”字符串命名,这些字符串始终显示为每个错误行的最后一个字段。 下表标识了 HTTP API 原因短语。

原因短语说明
AppOffline HTTP 错误 503) (出现服务不可用错误。 服务不可用,因为应用程序错误导致应用程序脱机。
AppPoolTimer HTTP 错误 503) (出现服务不可用错误。 服务不可用,因为应用程序池进程太忙,无法处理请求。
AppShutdown HTTP 错误 503) (出现服务不可用错误。 服务不可用,因为应用程序会自动关闭以响应管理员策略。
BadRequest 处理请求时出现分析错误。
Client_Reset 在将请求分配给辅助角色进程之前,客户端与服务器之间的连接已关闭。 此行为的最常见原因是客户端过早地关闭了与服务器的连接。
Connection_Abandoned_By_AppPool 应用程序池中的辅助角色进程已意外退出或关闭其句柄,从而使挂起的请求孤立。
Connection_Abandoned_By_ReqQueue 应用程序池中的辅助角色进程已意外退出或关闭其句柄,从而使挂起的请求孤立。 特定于 Windows Vista 及更高版本以及 Windows Server 2008 及更高版本。
Connection_Dropped 在服务器发送其最终响应数据包之前,客户端和服务器之间的连接已关闭。 此行为的最常见原因是客户端过早地关闭了与服务器的连接。
Connection_Dropped_List_Full 客户端和服务器之间已删除连接的列表已满。 特定于 Windows Vista 及更高版本以及 Windows Server 2008 及更高版本。
ConnLimit HTTP 错误 503) (出现服务不可用错误。 该服务不可用,因为已达到或超过站点级别的连接限制。
Connections_Refused 内核 NonPagedPool 内存已降至 20 MB 以下,http.sys已停止接收新连接
Disabled HTTP 错误 503) (出现服务不可用错误。 该服务不可用,因为管理员已使应用程序脱机。
EntityTooLarge 实体超出了允许的最大大小。
FieldLength 超出字段长度限制。
禁止访问 (Forbidden) 分析时满足了禁止的元素或序列。
标头 标头中出现分析错误。
主机名称 处理主机名时发生分析错误。
内部 HTTP 错误 500) (发生内部服务器错误。
Invalid_CR/LF 发生了非法回车或换行。
LengthRequired 缺少所需的长度值。
不适用 HTTP 错误 503) (出现服务不可用错误。 服务不可用,因为) 发生内存分配失败或 URL 预留列表冲突等内部错误 (。
N/I HTTP 错误 501) (发生未实现的错误,或者由于未知的传输编码,在 HTTP 错误 503) (出现服务不可用错误。
数字 处理数字时出现分析错误。
前提 缺少必需的先决条件。
QueueFull HTTP 错误 503) (出现服务不可用错误。 该服务不可用,因为应用程序请求队列已满。
RequestLength 超出请求长度限制。
Timer_AppPool 连接已过期,因为请求在应用程序池队列中等待时间过长,服务器应用程序无法排入队列并对其进行处理。 此超时持续时间为 ConnectionTimeout。 默认情况下,此值设置为两分钟。
Timer_ConnectionIdle 连接已过期并保持空闲状态。 默认 ConnectionTimeout 持续时间为两分钟。
Timer_EntityBody 在请求实体正文到达之前,连接已过期。 当请求明确具有实体正文时,HTTP API 会打开Timer_EntityBody计时器。 首先,此计时器的限制设置为 ConnectionTimeout 值 (通常为两分钟) 。 每次收到此请求上的另一个数据指示时,HTTP API 都会重置计时器,以便 (或 ConnectionTimeout) 中指定的任何信息,再提供两分钟的连接。
Timer_HeaderWait 连接已过期,因为请求的标头分析所花费的时间超过两分钟的默认限制。
Timer_MinBytesPerSecond 连接已过期,因为客户端未以合理的速度接收响应。 响应发送速率比默认值 240 字节/秒慢。可以使用 MinFileBytesPerSec 元数据库属性进行控制。
Timer_ReqQueue 连接已过期,因为请求在应用程序池队列中等待过长,服务器应用程序无法排队。 此超时持续时间为 ConnectionTimeout。 默认情况下,此值设置为两分钟。 特定于 Windows Vista 及更高版本以及 Windows Server 2008 及更高版本。
Timer_Response 保留。 当前未使用。
Timer_SslRenegotiation 连接已过期,因为客户端和服务器之间的安全套接字层 (SSL) 重新协商所花费的时间比默认超时时间长两分钟。
URL 处理 URL 时出现分析错误。
URL_Length URL 超出了允许的最大大小。
谓词 处理谓词时出现分析错误。
Version_N/S HTTP 错误 505) (出现版本不受支持的错误。

标签:HTTPERR,HTTP,请求,错误,API,日志,C盘,客户端
From: https://www.cnblogs.com/lb809663396/p/18054056

相关文章

  • shell-应用日志清理脚本(通用)
    应用日志清理脚本(通用)#!/bin/bash#================================================================#HEADER#================================================================#Filenameclear-logs.sh#Revision0.0.3#Date......
  • 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态
    目录类结构概述主要特性总结Log类是一个用于日志记录的C++类,其设计具有以下特点和功能:类结构概述类成员变量:path_:日志文件存储路径。suffix_:日志文件后缀名。MAX_LINES_:每个日志文件允许的最大行数。lineCount_:当前日志文件已写的行数。toDay_:当前日志文......
  • 网页浏览器Chrome开发者调试工具-Source(源码)-断点调试、条件断点、日志断点
    前言全局说明网页浏览器Chrome开发者调试工具-Source(源码)-断点调试、条件断点、日志断点断点,是某行代码要执行,还没有执行的一个暂停点一、截图对照1.1Chrome浏览器1.1.1蓝色,普通断点1.1.2设置断点类型图中分别是:backpoint:普通断点(蓝色)Conditionalbreakp......
  • Windows 系统日志是记录操作系统活动的重要组成部分,对于入侵排查和溯源来说,分析系统日
    Windows系统日志是记录操作系统活动的重要组成部分,对于入侵排查和溯源来说,分析系统日志是非常关键的一步。以下是针对Windows系统日志分析和溯源的基础技术原理:事件日志:Windows操作系统生成多个类型的事件日志,包括应用程序日志、安全日志和系统日志。了解不同类型的事件日......
  • 一文搞懂 Go 1.21 的日志标准库 - slog
    一文搞懂Go1.21的日志标准库-slog原创 rubys_ awk 2024-01-3120:20 广东 1人听过在过去多年里,我们在Go中写日志的时候,通常都是使用 Zerolog 或者 Zap 这两个包。在本文中,我们将重点探讨Go最近引入的 log/slog 包,该包旨在将高性能、结构化和分级日志......
  • 在K8S中,如何使用 EFK 实现日志的统一管理?
    在Kubernetes(K8s)中,EFK(Elasticsearch,Fluentd,Kibana)是一种常见的日志统一管理方案。EFK堆栈允许你收集、存储、搜索、分析和可视化容器化应用程序的日志。下面是如何在Kubernetes中使用EFK实现日志统一管理的详细步骤:1.部署ElasticsearchElasticsearch是一个分布式、RESTful......
  • Python日志logging模块
    Python日志logging模块logging---Python的日志记录工具—Python3.12.2文档Pythonlogging模块的基本使用、进阶使用详解_python中logging模块详解-CSDN博客logging模块架构日志级别默认的级别是“WARNING“,意味着只会追踪该级别及以上的事件。级别何时使用......
  • 第二十八:日志服务管理
    一、系统日志介绍在现实生活中,记录日志非常重要﹐比如:银行转账时会有转账记录﹔飞机飞行过程中的黑盒子(飞行数据记录器)记录着飞机的飞行过程.那么将系统和应用发生的事件记录至日志中,也很意义,常可以助于排错和分析使用日志记录的内容包括:历史事件:时间,地点,人物,事件......
  • (笔记)Linux下glog日志库的详细使用方法
     Glog是一个开源的C++日志库,它提供了非常方便的日志记录功能。下面是使用Glog的详细步骤: 一、安装Glog库您可以从Glog的官方网站(https://github.com/google/glog)下载Glog的源代码,然后进行编译和安装。在Linux系统下,您可以使用以下命令安装Glog库:sudoapt-getinstalllibg......
  • 浮木云学习日志(9)---模块统计设计
    ​在SaaS系统中,统计模块是非常重要的一个功能。对于C端产品,可能会展示用户个人使用数据,比如Keep中的锻炼时长统计。虽然这些数据只是供用户了解自己的使用情况,并非必需。然而,在B端的SaaS系统中,由于用户众多且业务复杂,公司管理层需要查看全公司数据和员工绩效情况。因此,SaaS系统必......