我正在尝试将端口80用于我的应用程序服务器,但是当我执行“ netstat -aon”时,我得到了
TCP 0.0.0.0:80 0.0.0.0:0侦听4
当我在任务管理器中查找进程时,它显示PID 4是SYSTEM,就这样,不是扩展名。。。什么都没有,只有“ SYSTEM”。这里发生了什么?
恐怕要结束此过程,该怎么办?
我正在尝试将端口80用于我的应用程序服务器,但是当我执行“ netstat -aon”时,我得到了
TCP 0.0.0.0:80 0.0.0.0:0侦听4
当我在任务管理器中查找进程时,它显示PID 4是SYSTEM,就这样,不是扩展名。。。什么都没有,只有“ SYSTEM”。这里发生了什么?
恐怕要结束此过程,该怎么办?
Answers:
尽管人们指出了特定的服务(例如“ Web部署代理服务”),但这无法解决根本原因。如果您仅禁用触发问题的服务,则将来它可能会以不同的形式再次抬起头来。因此,有必要了解出了什么问题,因为这将导致更好的修复。
当应用服务器希望完全控制端口80时,就会出现此问题。这与Windows的功能冲突,Windows的功能旨在使多个进程能够处理端口80上的请求。完全有可能有任意数量的进程都在端口上接收HTTP请求80,因为Windows具有内置的HTTP调度机制。每个进程都可以告诉Windows它要处理哪些URL。
但是,如果应用程序服务器完全忽略了这一点,那么您又回到了较不灵活的老式套接字世界,那里只有一个进程可以接收发往任何特定端口的请求。
那可能很好-如果您真的不想要除端口80上处理HTTP请求的特定进程以外的任何东西,那么可以使用不能支持Windows提供的更灵活机制的应用程序服务器。(而且某些流行的应用程序服务器也有此限制。例如,AFAIK,Tomcat无法与其他应用程序很好地兼容,并且坚持要全部使用80端口。因此,如果您使用其他人的应用程序服务器,则可能不切实际。使其适应使用首选机制。)
Windows尝试通过不将其分发机制绑定到端口80来适应这种不灵活的服务,直到有人主动提出要求为止。(这就是为什么您一开始不一定会看到问题,但是在进行某种更新或配置更改后可能会遇到此问题的原因。)但是,依靠它不是一个非常可靠的解决方案-您实质上是希望运气不高尝试在应用服务器启动之前在端口80下侦听。(由于多种原因,进程可能会推测性地尝试在端口80上注册某些URL,并在不允许的情况下退出。)
因此,如果您希望一项服务具有对端口80的独占访问权,则最好告诉Windows。试图关闭所有可能尝试使用常规端口共享机制的服务并不够好,因为很难确定已经找到了所有服务。(特别是在Windows更新似乎默认情况下更改了什么的情况下。)禁用已知的方法可能是一个好习惯,但是最好从两端着手:禁用不需要的服务,并确保它不会对于您不认识的人可能会绊倒您。
默认情况下HTTP.SYS
(Windows中的基础端口共享HTTP调度机制)能够侦听所有地址。但是你可以告诉它不要。此页面显示了一种执行此操作的方法:http : //www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/
这是一种相对简单的方法,因为它仍然允许在本地主机上侦听IPv6。它只是释放了IPv4端口80。您可以使用更专业的配置来进一步扩展它。(您甚至可以HTTP.SYS
完全禁用,但是使用80以外的端口可能会破坏某些功能,因此可能会引起问题。)
但是无论您做什么,关键是要确保HTTP.SYS
不要尝试侦听您关心的IP地址上的端口80。完成此操作后,您不必担心禁用服务,也不必担心其他重新引入问题的更改。如果您已确保所需的端点实际上不在端口共享的范围之内,那么您应该发现系统进程已停止与其绑定。
罪魁祸首是Web部署代理服务。
比net stop http
停止名为“ Web Deployment Agent Service”的服务更好的解决方案。
World Wide Web Publishing Service
。虽然“ net stop http”本身是一个非常残酷的答案,但充满了讨厌的副作用-诸如打印后台处理程序和Windows 10登录过程的一部分之类的服务都依赖于http-如果尝试,它将提供以下内容的列表:依赖于http的服务以及退出选项。我发现一张列表中的一小部分服务是我发现WWW Publishing Service是罪魁祸首的方式。
很有可能是IIS 6.0或更高版本。
以内核模式运行的HTTP协议栈(HTTP.sys)接收客户端请求,并将其路由到适当的请求队列。在用户模式下运行的工作进程将请求直接从其自己的内核请求队列中拉出,从而消除了当Web服务器将请求发送到高级服务器时在IIS 5.0中发生的过程跳(以及在IIS 5.0隔离模式中也发生了)。 -隔离,进程外应用程序。由于在工作进程隔离模式中消除了这些额外的进程跃点,因此IIS可以在不牺牲性能的情况下提供应用程序隔离。
最后我检查了一下,您无法结束“系统”过程,如果您这样做了,我想它将会产生灾难性的影响。我也不会在现在使用的PC上尝试它!
Windows内部似乎正在侦听某些内容:80-我猜测这可能是恶意的。找出答案的最佳方法是:
a)打开Web浏览器到localhost,看看会发生什么
b)启动Telnet和telnet到localhost 80并运行一些基本的HTTP GET(例如GET /),然后查看返回的内容
如果您认为自己可能正在托管恶意软件,则B是更好的选择,因为您确实不想再次感染自己。虽然也许没关系。
我在以下位置找到了该问题的答案:https : //superuser.com/questions/352017/pid4-using-port-80
具体来说,当它是系统进程4时,您需要禁用HTTP.sys驱动程序,该驱动程序是由其他服务(例如Windows 7或2008上的Windows远程管理或Print Spooler)按需启动的。
重新启动并使用netstat -nao | 找到“:80”以检查是否仍使用80。
我还尝试通过仅运行“ net stop http”来恢复端口,但是该端口似乎从未释放过。上面的代码对我确实有用,并且II不需要依赖于该驱动程序的其他服务。
就我而言,这是由于炭黑抗病毒以某种方式在端口80上受了束缚。不知道它是如何固定的,请咨询您的服务器/网络团队!