当访问人数很多的时候就会在Apache的错误日志里发现好多:
“ [warn] (OS 64)指定的网络名不再可用。: winnt_accept: Asynchronous AcceptEx failed.”这可能是由于Apache与windows的不兼容引起,官方已经把此问题收录进BUG列表,但始终没有理想的解决办法。
apache指定的网络名不再可用错误解决方法――方法/步骤apache指定的网络名不再可用错误解决方法 1、
在httpd.conf里找到#EnableMMAP Off(禁用内存映射)
#EnableSendfile Off修改成:EnableMMAP OffEnableSendfile OffAcceptFilter http noneAcceptFilter https none
apache指定的网络名不再可用错误解决方法 2、
“Win32DisableAcceptEx”指令:
AcceptEx()是微软的WinSock2 API ,通过使用BSD的accept() API 提供性能的改善。很多Windows软件会干扰AcceptEx()操作。
当遇到像下面的错误:[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.
就需要使用这一个指令禁止使用AcceptEx() 。
关闭AcceptEx() 的同时也随着关闭了EnableMMAP和 EnableSendfile.
apache指定的网络名不再可用错误解决方法 3、
在Linux服务器上启用IPv6的时候,使用sendfile会触发网卡上的TCP校验和卸载的bug。当Linux运行在Itanium处理器上时,sendfile将无法处理2GB以上的文件。对于通过网络挂载NFS文件系统的DocumentRoot,内核将无法通过缓冲区服务到网络文件。当出现以上情况的时候,应该禁用sendfile:EnableSendfile Off针对NFS或SMB,这个指令可以被针对目录的设置覆盖:EnableSendfile Off
还是关闭这两个指令比较好一些。
apache指定的网络名不再可用错误解决方法――注意事项
故障[warn] (OS 64)指定的网络名不再可用的解决办法主要是关闭AcceptEx对于另外两个指令可选则关闭。