Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  03:57[Войти] | [Зарегистрироваться]
Ответ на вопрос № 83815

01-06-2022 13:27
Коллеги, может кто-либо сможет оценить ситуацию!

Исходная информация:
1. В локальной сети на одном из серверов работает программа, которая в том числе непрерывно пишет информацию в бинарный файл фиксированного размера.
2. На каждом из узлов в сети может запускаться программа-клиент (количество одновременно работающих может превышать 100), которая читает информацию из того самого бинарного файла с «расшаренного» ресурса сервера

Описание проблемы:
1. У «клиентов» никогда не было проблем с чтением этого файла, пока сервер был физически отдельной рабочей станцией с ОС Windows Server 2000.
2. После того как сервер «перевели» на виртуальную машину с ОС Windows Server 2016 начались необъяснимые (как минимум для меня) проблемы - у отдельных клиентов при чтении информации из файла считываются не реальные (измененные) данные, а данные, «замерзшие» на какой то момент времени (такое впечатление, что ОС кеширует файл). При этом:
- на этом «проблемном» узле атрибуты времени изменения у файла (TSearchRec.Time или просто информация из проводника) меняются
- на этом «проблемном» узле пробую открыть файл стандартными средствами (notepad etc) - видно, что данные не меняются
- у других клиентов в сети данные в файле  в тот же момент времени меняются

Программа на сервере пишет информацию в файл с помощью стандартного FileStream
Программы-клиенты читают информацию из файла с помощью стандартного FileStream

Не сталкивались ли Вы с чем-либо подобным? Как боролись?
Подскажите куда «копать»?

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

21-08-2022 04:44 | Комментарий к предыдущим ответам
Можно попробовать пару методов, но они могут и не помочь:
FlushFileBuffer но для этого придётся отказаться от TFileStream и перейти к THandleStream (большая часть интерфейсов останется, так что поправить придётся только места конструирования).
В дополнение, CreateFile с флагами FILE_FLAG_WRITE_THROUGH и FILE_FLAG_NO_BUFFERING. Флаги весьма капризные в применении, внимательно читайте документацию, прежде чем применить!

03-06-2022 22:52
>>>…у отдельных клиентов при чтении информации из файла считываются не реальные (изменённые) данные, а данные, «замёрзшие» на какой-то момент времени (такое впечатление, что ОС кеширует файл). 
  Вероятнее всего так оно и есть. ОС кеширует файл.

>>>Не сталкивались ли Вы с чем-либо подобным?
  На мой взгляд, это проблема "файл-серверной" архитектуры доступа к данным.
  Доступ к данным посредством Файла - это некоторое упрощение, при котором, вы как бы забываете о способе обмена данными между поставщиком и потребителем данных. Другими словами, вы вообще забываете о "сетевой архитектуре" вашей программки. "Сетевую архитектуру программки" подменяет "сетевая архитектура файловой системы".
  Говорят, такой подход можно использовать в простейших случаях, когда скорость обновления данных невелика и "собственные задачи файловой системы" на слишком сильно влияют на критичность и скорость получения данных (блокировка, кэширование, задержки обслуживания и т.д.). Он позволяет сильно упростить программку и сократить на её разработке. Но только до тех пор, пока требования к "сетевому обмену данными программки" не превышают "сетевых возможностей файловой системы".
 
>>>Как боролись?
  Использовать "клиент-серверную архитектуру".

  1. Разработать программки сервера и клиента, обменивающихся данными посредством "сокетов".
  Не поверите, но доступ к данным через "сокеты" был разработан, как сетевой аналог доступа через "файлы".

  2. Использовать "сервер баз данных".
  В этом случае, "сервер БД" может выступить единственным сетевых ресурсом данных. Вам остаётся разработать, одну программку, заливающую данные на сервер и вторую - забирающую данные с сервера БД.

>>>Подскажите куда «копать»?
  Уточните вопрос. Вы хотите спросить: "Как отключить кэширование ОС"?

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Зимой — белый, летом — серый. Кто?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования