Несколько пользователей получают доступ к базе данных VFP App / dbase по сети — медленные проблемы

В настоящее время я запускаю приложение VFP9, которое использует базу данных, которая в основном представляет собой папку с несколькими файлами DBF, FPT и CDX.

Теперь эта база данных в основном используется в сети (сеть 1 ГБ / коммутатор / ПК) для более чем 50 пользователей.

Теперь время от времени мы получаем сообщение «попытка блокировки». Я проверил оборудование, никаких проблем или узких мест не обнаружено. Также иногда более 50 человек могут получить доступ или даже записать в определенный файл в течение нескольких секунд.

Я столкнулся с потенциальными проблемами с «Oplocks» в области Lanman через Google, но, похоже, этого не существует в Windows 2008 R2 / Windows 7. Также читал о SMB в целом, но я в своем уме.

Я не знаю, что смотреть дальше? Может быть, я проверяю пределы возможностей системы VFP/Dbase?

Может ли кто-нибудь помочь?

Спасибо, Райан.


person Ryan    schedule 15.07.2013    source источник
comment
Переместите свои приложения/базы данных на Citrix или сервер терминалов.   -  person sskoko    schedule 26.09.2013


Ответы (2)


Может быть много вещей, и это может быть совершенно нормально. У вас есть исходный код приложения?

«.. более 50 человек могут получить доступ или даже записать в определенный файл в течение нескольких секунд ..» не означает, что для меня неудивительно, что у вас возникают конфликты блокировки.

Сообщение «Попытка блокировки» просто означает, что несколько человек пытаются получить доступ к одной и той же записи (или файлу при грубой блокировке).

Увеличилось ли в последнее время количество пользователей?
Была ли система рассчитана на такой объем? Влияет ли это на одну конкретную функцию программного обеспечения (скорее всего, должно быть) или это затрагивает всю систему в нескольких функциях?

Технические ограничения для VFP (я думаю, 2 ГБ на одну таблицу), и практически это становится медленным, когда есть миллионы записей (огромное обобщение). Хорошая индексация поможет, когда таблицы станут большими

Является ли это прерывистым сигналом в системе (например, в обеденное и вечернее время) или это непрерывная или более частая нагрузка на систему?

Если у вас есть исходный код, вы можете многое сделать, если нет, вам нужно выяснить, какие DBF заблокированы (это будут те, в которых много записей и, возможно, файлы большого размера, когда вы смотрите на каталог)

У вас есть сам VFP или это скомпилированный EXE?

У вас есть много вариантов и вещей, которые вы можете сделать, но нужно больше информации.

Ник

person Tin Bum    schedule 15.07.2013
comment
Ну, в этом случае у нас есть файл аудита. Таким образом, независимо от того, к какой области системы кто-либо обращается, любое записанное действие затем записывается в аудит dbf/fpt. У нас есть система, поэтому файл аудита может стать огромным (500 МБ), но затем он автоматически архивируется в начале каждого месяца, чтобы он не стал смешным. сама программа VFP представляет собой скомпилированный EXE-файл, доступ к которому всегда осуществляется локально, независимо от машины, это просто расположение базы данных, к которому обычно осуществляется доступ по сети (если только некоторые пользователи не подключены к серверу по протоколу RDP) - person Ryan; 17.07.2013
comment
Тогда я думаю, может быть, очищать файл аудита чаще, чем раз в месяц. - person Tin Bum; 17.07.2013
comment
Используйте VFP.EXE для просмотра файла аудита до и после автоматического архивирования, очищает ли процесс архивирования его полностью или частично. - person Tin Bum; 17.07.2013
comment
Причина для просмотра файла с помощью VFP. На всякий случай, если ваша существующая процедура архивирования не позволяет запускаться чаще, чем раз в месяц (например, из-за встроенного в нее ограниченного соглашения об именах файлов), просматривая файл контрольного журнала до и после архивирования, вы создаете картину что он делает, как он решает, сколько записей стереть и т. д., поэтому, если вам придется переписать новую процедуру архивирования (без ограничения на имена файлов), вы будете лучше информированы. - person Tin Bum; 17.07.2013
comment
Спасибо за ваш вклад до сих пор. Архивация имеет встроенное ежемесячное соглашение об именах. Сам процесс архивации увидит все записи, датированные предыдущим месяцем, и просто вырежет их и поместит в совершенно новый файл аудита, который доступен только для чтения только для администратора. Я подозреваю, что вы правы в том, что размер файла является проблемой, хотя, поскольку пользователь больше не возвращался ко мне с проблемой, мне интересно, облегчат ли меньшие файлы проблему, но не решат ее в целом. Хм - person Ryan; 17.07.2013
comment
Я думаю, что вы, скорее всего, на правильном пути с файлом аудита. Если в него записывается каждый аспект программного обеспечения, то это, безусловно, самый загруженный файл в вашей системе, и, как вы сказали, он также является одним из самых больших. При добавлении записей (что должно часто происходить с файлом аудита) VFP будет занимать больше времени по мере увеличения файла - по моему опыту (и логично). - person Tin Bum; 18.07.2013
comment
Извините, я продолжаю нажимать ввод для новой строки ... и размещать незаконченные материалы - person Tin Bum; 18.07.2013
comment
При нормальной работе, когда файл небольшой, процесс блокировки заголовка, добавления записи, записи данных и разблокировки происходит быстро — миллисекунды, когда файл становится больше, это занимает больше времени, в конечном итоге достаточно долго, чтобы появилось сообщение «Попытка блокировки». Для построения и отображения таких сообщений VFP требуется довольно много миллисекунд, что удивительно долго - намного дольше, чем блокировка ... разблокировка в небольшом файле. - person Tin Bum; 18.07.2013
comment
Спасибо за совет, Ник. Я думаю, нам придется пойти по пути, позволяющему архивировать еженедельно, а не ежемесячно, или, может быть, даже настроить систему на работу на основе того, что у пользователя есть свободный доступ к тому, как часто он хочет архивировать это. файл. Спасибо за помощь и совет в этом! Будет обновляться с любыми новостями после того, как изменения будут реализованы. (ps. Я обнаружил, что мне нужно использовать SHIFT + ENTER для перехода на новую строку при вводе текста в поле комментариев, но он по-прежнему форматирует его без разрывов строк) - person Ryan; 18.07.2013

Что касается медлительности приложения, я знаю одну вещь, которая может быть проблемой, особенно если у вас есть 50 пользователей, работающих с приложением VFP. Запускается ли приложение с СЕРВЕРА... Я имею в виду, у каждого пользователя есть ярлык, указывающий на что-то вроде

S:\SomeShare\YourVFPApp.exe

Если это так, то это может ЗНАЧИТЕЛЬНО снизить производительность. Это тянет приложение вниз по сети для каждого пользователя, высасывающего трафик. Что я сделал с клиентами, так это следующее. Выберите место на локальном диске C: машины... например: C:\NetworkApps и скопируйте файл YourVFPApp.exe в эту папку C:\NetworkApps.

Затем создайте новый ярлык, указывающий на C:\NetworkApps\YourVFPApp.exe, и сохраните его.

Затем измените ярлык, но на этот раз измените папку «Начать в» на исходное местоположение, например «S:\SomeShare\». Сохраните изменения и запустите ЭТУ версию ярлыка.

То, что это в основном делает, - это запуск приложения ЛОКАЛЬНО, но начиная с того же конечного местоположения, которое используется совместно (особенно если пути жесткого кода были реализованы и с ними ужасно иметь дело). Это предотвращает потребность всех пользователей получать приложения по сети и просто иметь дело с фактическими таблицами и трафиком данных.

Да, это может быть немного больно, когда есть обновления приложений, но для этого я написал еще одно простое приложение VFP, которое смотрит на локальный диск, сравнивает exe с «последней версией», как в сети доля. Если версия сервера новее, скопируйте ее локально, ЗАТЕМ запустите ее, начиная с ожидаемой папки «S:\SomeShare\».

Что касается блокировки, если вы используете блокировку TABLE вместо блокировки RECORD, вы, очевидно, увидите больше проблем с задержкой ожидания сообщений блокировки, но устранение возможных узких мест в сети на стороне приложения может помочь вам решить эту проблему.

person DRapp    schedule 17.07.2013
comment
Привет, да, к EXE всегда обращаются локально, это просто файлы базы данных, к которым обычно обращаются через общий сетевой ресурс (если только некоторые пользователи не имеют доступа RDP непосредственно к серверу, поэтому все по-прежнему локально) - person Ryan; 17.07.2013
comment
Мы запускаем его как заблокированную запись, а не как заблокированную таблицу. Как упоминалось выше, возможно, это частично связано с размером файла (увеличение времени на 200 МБ, необходимое для чтения и записи в таблицу), или, может быть, это связано с тем, что 50+ пользователей (и их число увеличивается) потенциально получают доступ и запись в таблицу. в любое время. - person Ryan; 17.07.2013