Bloqueo inexplicable de archivos compartidos a través de la red en Windows 8


0

Tengo una aplicación (Win 32-bit) que hace que un conjunto de datos cambiantes esté disponible para otras máquinas de la red al escribir un archivo de datos de aproximadamente 100 kbytes por segundo. Otras PC leen el mismo archivo una vez por segundo para acceder y mostrar los datos en ubicaciones remotas. Las colisiones son esperadas y ocurren de vez en cuando y se manejan abriendo el archivo en el modo apropiado. Si un esclavo dado no puede abrir el archivo porque está siendo escrito, no hay consecuencias que resulten de que se le niegue el acceso, simplemente lo obtiene la próxima vez.

El sistema se ha ejecutado sin problemas en WinXP durante varios años pero se acaba de instalar en una red de Windows 8 y se está comportando mal.

Después de un período de tiempo (generalmente muchas horas, y algunas veces días), la PC "maestra" deja de actualizar el archivo - se devuelve cada acceso The process cannot access the file because it is being used by another process - Así los esclavos ven datos "congelados" de entonces en adelante. Sin embargo, la situación es permanente, y el único curso de acción es salir de la aplicación maestra y reiniciar la PC maestra; solo salir de la aplicación maestra no libera el archivo.

¿Alguien tiene alguna sugerencia para lo que podría estar causando esto?

¿Ayudaría SysInternals ProcessExplorer (usando la función Buscar "manejar")?

Una nota final: el archivo de datos que se usa para hacer que la información disponible se nombre con una extensión MSI. ¿Podría Windows 8 haber introducido algunas funciones de "niñera" para evitar que las aplicaciones hagan referencia a lo que cree que podrían ser las imágenes del instalador de MSI? Estoy aferrado a las pajitas aquí. Naturalmente, tengo la intención de probar algo más como una extensión, pero el acceso al sistema es difícil, ya que forma parte de un sistema 24-7-365, por lo que quiero reunir tanta información antes de esa fecha.


1
Tal acceso frecuente a un archivo estático por muchas máquinas no es muy eficiente. El sistema debería, idealmente, ser revisado para usar una base de datos como MySQL. Puede agregar a la base de datos tantas veces como desee y sus clientes simplemente la consultarán cuando lo deseen. No obtendrá ningún problema de bloqueo si los clientes simplemente están leyendo información.
Kinnectus

@Chris, Gracias por tus comentarios. Such frequent access to a static file by many machines isn't very efficient. No entiendo por qué dices eso? En mi PC, escribir este archivo lleva 15 ms y leerlo 4 ms. Esta sobrecarga es aceptable para nosotros, y no estoy seguro de que MySQL sea más rápido. La razón por la que tengo problemas de bloqueo es porque no funciona como creo que debería.
rossmcm

Pero la naturaleza pura de leer y escribir un archivo inevitablemente dará una colisión que estás experimentando. Una base de datos está diseñada para proporcionar muchos miles de conexiones simultáneas. ¿Por qué crees que Facebook no es un archivo masivo que se lee y se escribe? No es que su proceso sea necesariamente incorrecto, simplemente está utilizando la herramienta incorrecta para el trabajo incorrecto y está experimentando el escollo de la herramienta incorrecta. Sin embargo, seguir adelante. ¿Es el "maestro" (servidor) la máquina Win 8?
Kinnectus

¿Cuál es la velocidad de conexión de red de la máquina Win 8? ¿Es una conexión gigabit y los clientes son más lentos? He visto esto antes con las bases de datos de Access, pero puede producir problemas similares con los archivos estáticos. Además, ¿cuál es la configuración de energía del adaptador de red de la PC maestra? ¿El maestro tiene alguna configuración de potencia configurada?
Kinnectus

@Chris - perdón por la demora en responder. Todas las máquinas están en su propia subred de 100 Mb, todas ejecutando Win8. Todos los NWC tienen todos los ajustes de potencia desactivados.
rossmcm
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.