Recientemente en uno de los servidores Windows donde tengo instalado Apache como servidor web, comencé a notar que el servicio dejaba de aceptar peticiones, incluso si el servicio se mostraba como ejecutándose. Al realizar pruebas de conexión desde otros equipos al puerto configurado, la conexión no se produce.
Una forma de solucionar el problema, por lo menos de forma temporal, es reiniciar los servicios de apache. El problema puede llegar a presentarse después de algún tiempo, un par de horas, un par de días, o con suerte, un par de semanas.
Además de los sítomas descritos en el párrafo anterior, en los logs de apache se encuentra lo siguiente:
«winnt_accept: Asynchronous AcceptEx failed».
Al realiza una búsqueda en otros blogs y los foros de Apache, encontré que la solución a este problema es agregar las siguientes líneas al archivo de configuracion de Apache:
Win32DisableAcceptEx
EnableSendfile Off
EnableMMAP Off
La explicación de Apache para el problema econtrado es que la función AcceptEx() es un API Wisock de Microsoft que proporciona algunas mejoras en rendimiento sobre el uso de la API accept () del estilo BSD en algunas circunstancias. Algunos productos de Windows, por lo general antivirus o programas de VPN tienen errores que interfieren con el correcto funcionamiento de AcceptEx (). Si encuentras una condición de error como:[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover,
e
ntonces deberías deshabilitar el uso de AcceptEx()
Tras haber aplicado la sugerencia de Apache, el problema no ha sido observado nuevamente en el ambiente.
Para aclarar, mi servidor es Windows 2008 R2 Sp1 y la versión de Apache es a 2.4.
Aquí los enlaces de referencia:
https://stackoverflow.com/questions/34646636/apache-ah00341-winnt-accept-asynchronous-acceptex-failed
https://communities.ca.com/thread/241692373
http://httpd.apache.org/docs/2.2/mod/mpm_winnt.html
Gracias por la información; te cuento que he ingresado las tres directivas; sin embargo mi servicio httpd no se inicia; Win8.1 x64; Por lo que he comentado solo la directriz: Win32DisableAcceptEx; dejando las otras dos; por ahora, parece que funciona. Ya veré con el tiempo.
Dejo esto; para httpd 2.2x
Win32DisableAcceptEx
Para httpd 2.4x
AcceptFilter http none
AcceptFilter https none
Fuente: https://wiki.apache.org/httpd/AcceptExFailed