• 【原创】Apache服务器500错误失去响应的问题解决


    某生产网站部署在Apache上,使用tomcat集群,偶尔网站失去响应,查看首页发现无法打开,页面假死,出现过多次,查看apache的日志,发现经常出现以下提示:

    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Dec 27 13:48:15 2013] [warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.

    研究之下,发现这和windows系统的一个特性有关:

    Apache MPM winnt

    说明 专门为Windows NT优化过的MPM
    状态 MPM
    模块名 mpm_winnt_module
    源文件 mpm_winnt.c

    概述

    该多路处理模块(MPM)是Windows NT上的默认值。它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。

    Win32DisableAcceptEx 指令
    说明 使用accept()代替AcceptEx()接受网络链接
    语法 Win32DisableAcceptEx
    默认值 AcceptEx()是默认的,使用这个指令将禁用它。
    作用域 server config
    状态 MPM
    模块 mpm_winnt
    兼容性 仅在 Apache 2.0.49 及以后的版本中可用

    AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些防毒软件或者其他因素导致该特性不可用,造成了apache的拒绝服务。

    解决办法:

    修改httpd.conf文件,增加以下内容配置:

    <IfModule mpm_winnt.c>
    
    ThreadsPerChild 150
    
    MaxRequestsPerChild  10000
    
    Win32DisableAcceptEx
    
    </IfModule>

    如果还是出现以上的报错信息,则可以尝试如下配置:

    1、网上邻居->本地连接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉启用LMhosts查询前的
    勾.

    2、控制面版->windows防火墙->高级标签->本地连接设置->服务的标签里勾选安全Web服务器(HTTPS)。

    3、然后退出Apache,再打开启动就可以了,一开始我没有退出,直接在那重启,就是不可以,一定要先停止,在开启即可。

    然后重启apache后,发现已经正确的载入了配置:在日志中可以发现notice信息。

    [notice] Disabled use of AcceptEx() WinSock2 API
  • 相关阅读:
    【杂谈】SpringBoot为啥不用配置启动类
    【API知识】SpringBoot项目中@EnableXXX的原理
    【杂谈】再看生产-消费模式
    【杂谈】Hash表与平衡树
    【杂谈】如何对Redis进行原子操作
    【杂谈】从底层看锁的实现2
    【杂谈】从底层看锁的实现
    HashMap的简易解读
    定时任务、反射、注解
    值得收藏的js原型详解
  • 原文地址:https://www.cnblogs.com/zhangxsh/p/3528769.html
Copyright © 2020-2023  润新知