Bloqueio inexplicável de arquivos compartilhados na rede no Windows 8


0

Eu tenho um aplicativo (Win 32 bits) que disponibiliza um conjunto de dados alterados para outras máquinas de rede, gravando um arquivo de dados de cerca de 100 kbytes por segundo. Outros PCs leem o mesmo arquivo uma vez por segundo para acessar e exibir os dados em locais remotos. As colisões são esperadas e ocorrem de vez em quando e são tratadas abrindo o arquivo no modo apropriado. Se um dado escravo não puder abrir o arquivo porque está sendo gravado, não há consequências resultantes do acesso negado - ele o obtém da próxima vez.

O sistema funciona sem problemas no WinXP há vários anos, mas acaba de ser instalado em uma rede Windows 8 e está se comportando mal.

Após um período de tempo - geralmente muitas horas e, às vezes, dias - o PC "mestre" para de atualizar o arquivo - todo acesso é retornado The process cannot access the file because it is being used by another process- para que os escravos vejam dados "congelados" a partir de então. A situação é permanente, no entanto, e o único curso de ação é sair do aplicativo mestre e reiniciar o PC mestre - sair do aplicativo mestre não libera o arquivo.

Alguém tem alguma sugestão para o que poderia estar causando isso?

O SysInternals ProcessExplorer ajudaria (usando a função "localizar")?

Uma observação final: o arquivo de dados usado para disponibilizar as informações é nomeado com uma extensão MSI. O Windows 8 poderia ter introduzido algumas funções de "babá" para impedir que os aplicativos fizessem referência ao que pensam ser imagens do instalador do MSI? Estou agarrando canudos aqui. Naturalmente, pretendo tentar outra coisa como uma extensão, mas o acesso ao sistema é difícil, pois faz parte de um sistema 24-7-365, por isso quero reunir o máximo de conhecimento antes disso.


1
Esse acesso frequente a um arquivo estático por muitas máquinas não é muito eficiente. O sistema deve, idealmente, ser revisado para usar um banco de dados como o MySQL. Você pode adicionar ao banco de dados quantas vezes quiser e seus clientes simplesmente consultam quando quiserem. Você não terá problemas de bloqueio se os clientes estiverem simplesmente lendo informações.
Kinnectus

@ Chris, Obrigado por seus comentários. Such frequent access to a static file by many machines isn't very efficient.Eu não entendo por que você diz isso? No meu PC, a gravação deste arquivo leva 15 mS e a leitura de 4 mS. Essa sobrecarga é aceitável para nós, e não tenho certeza se o MySQL seria mais rápido. A razão pela qual estou tendo problemas de bloqueio é porque não está funcionando como acredito que deveria.
Rossmcm

Mas a natureza pura de ler e escrever um arquivo inevitavelmente causará uma colisão que você está enfrentando. Um banco de dados foi projetado para fornecer muitos milhares de conexões simultâneas. Por que você acha que o Facebook não é um arquivo enorme que está sendo lido e gravado? Não é que o seu processo esteja necessariamente errado, apenas use a ferramenta errada para o trabalho errado e você está enfrentando a armadilha da ferramenta errada. Seguindo em frente, no entanto. O "mestre" (servidor) é a máquina Win 8?
Kinnectus

Qual é a velocidade de conexão de rede da máquina Win 8? É uma conexão de gigabit e os clientes são mais lentos? Eu já vi isso antes com bancos de dados do Access, mas pode produzir problemas semelhantes com arquivos estáticos. Além disso, qual é a configuração de energia do adaptador de rede do PC mestre? O mestre possui configurações de energia definidas?
Kinnectus

@ Chris - desculpe pela demora em responder. Todas as máquinas estão em sua própria sub-rede de 100 Mb, todas executando o Win8. Todos os NWCs têm todas as configurações de energia desativadas.
Rossmcm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.