У нас есть БД MS-Access на файловом ресурсе. Мы получаем низкую производительность и сообщения об ошибках, которые, как мы подозреваем, связаны с медленным доступом к файлам. Что нужно проверить в первую очередь, чтобы узнать, что такое горлышко бутылки?
Он отлично работает локально, поэтому мы уверены, что это не само приложение.
Вы можете выполнить «быстрый и грязный» тест пропускной способности файлового сервера, создав большой временный файл на серверном компьютере с помощью команды fsutil, а затем рассчитав время передачи на клиентский компьютер:
fsutil file createnew temp-file-name 209715200
Это создаст временный файл размером 200 МБ. Вы можете выполнить быстрое копирование с синхронизацией, используя следующий сценарий (из каталога, в котором вы создали временный файл на сервере, и при условии, что у вас есть права на подключение к общему ресурсу «C $» клиентского компьютера):
@echo off
echo.|time
copy temp-file-name \\remote-computer-name\c$
echo.|time
Вычтите время окончания из времени начала, преобразуйте в секунды и разделите 209715200 на количество прошедших секунд, чтобы получить байты в секунду.
Вы должны увидеть более 7000000 байтов в секунду (примерно 56 Мбит / с) в LAN 100Base-TX. Что-нибудь ниже этого, и я начну подозревать, что что-то не так. Если предположить, что серверный компьютер достаточно современный, он должен без проблем заполнить канал 100 Мбит / с. Если вы видите, что скорость передачи ниже этой, я бы начал смотреть на счетчики ошибок в интерфейсе администрирования коммутатора, к которому подключены сервер и клиент. У вас могут быть неисправные кабели, несоответствие дуплексного режима или проблемы с драйвером сетевой карты. Все дело в том, чтобы методично отследить проблему.
Попробуйте сделать имя файла короче, а полный путь короче. Звучит странно, но в некоторых случаях это так. Посмотри это КБ.
Вы также можете убедиться, что подписание SMB отключено (HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ Lanmanworkstation \ Parameters \ enablesecuritysignature установлено в 0) как на сервере, так и на рабочей станции (см. нить).
Существует также несколько странная проблема, связанная с блокировкой LDB, которую вы можете проверить. Видеть эта страница.
Увидеть Доступ к часто задаваемым вопросам производительности страница.
Еще пара вещей, которые можно попробовать, - это сжать саму базу данных (я предполагаю, что в Access все еще есть эта функция) и дефрагментировать фактический файл базы данных на машине, выполняющей совместное использование. Для дефрагментации отдельных файлов я рекомендую sysinternals контиг утилита командной строки.
Вы также можете проверить наличие плохой сети, запустив команду ping в течение длительного времени (я считаю, что «ping -t» - правильное выражение Windows для команды) и проверив, отбрасываете ли вы пакеты или наблюдаете ли высокую задержку в сети.