如果执行了 IIS 重置,当前正在处理但尚未完成的请求是否会记录在 IIS 日志中?
并且,已经完成但尚未刷新到日志文件的请求是否仍会写入文件中?
答案1
我猜不是,因为所有内存中的会话状态也会丢失。根据 Microsoft 文档启动或停止 Web 服务器 (IIS 8):
当您想停止 Web 服务器提供内容时(例如升级应用程序时),可以停止 IIS。要停止 Web 服务器,必须停止 Windows 进程激活服务 (WAS) 和万维网发布服务 (W3SVC)。然后,当您准备好让 Web 服务器再次提供内容时,可以启动 Web 服务器。
当您停止 WAS 和 W3SVC 时,连接到 Web 服务器的所有会话 被删除。所有内存中的会话状态都将丢失。在这些服务重新启动之前,所有网站都不可用。因此,如果可以,请避免停止并重新启动 Web 服务器。
关于IIS 重置活动:
IISreset.exe 是一个命令行实用程序,可用于停止、启动和重新启动 IIS Internet 服务。
注意:重新启动或停止 IIS,或者重新启动 Web 服务器,都是非常严重的操作。使用 IISreset 后,您的网站和应用程序将不可用,连接到您的 Web 服务器的所有会话 删除后,您将丢失应用程序中的现有状态。更改 元数据库可能会丢失。直到受影响的互联网服务重新启动后,您的网站和应用程序才可用。
IISreset 命令停止并重新启动 IIS 管理服务、Windows 进程激活服务 (WAS) 和万维网发布服务 (WWW 服务)。
除非绝对必要,否则请避免使用 IISreset。相反,请先尝试重新启动可能导致问题的单个网站或单个应用程序池。
... 当发生可记录事件(通常是 HTTP 事务)时,IIS 会调用选定的日志模块,然后将其写入存储在 %SystemRoot%\system32\Logfiles\ 中的日志之一。
据我所知,首先,必须完成 HTTP 事务才能记录下来,然后日志服务也必须运行,直到完成写入。因此,在停止和启动之间,正在进行的请求存在灰色区域,并且完全写入日志的机会很小。这还取决于相关服务在关闭前要等待多长时间。
答案2
IIS 重置执行干净的服务重启,这样日志文件就可以正确关闭。
这不像你杀死进程。(或者如果由于扩展问题而无法完成重启,因为在这种情况下该过程也会挂断并完成终止)