При подключении к терминальному серверу используется автоматическое подключение локальных дисков компьютера клиента.
После формирования табличный документ отображен в элементе управления на форме.
Необходимо сохранить документ на локальный диск клиента, например с таким именем - \\tsclient\c\test.xls.
После выдачи команды на сохранение программа практически зависает, т.е. сохранение файла всетаки идет, но может длиться часами.
В тоже время, если сохранять тот же документ в формате mxl - проблем нет.
Тестировалось на файлах размером до 100КБ (mxl).
Йоксель » Главный форум
Проблемы с записью на диск в терминале
(13 posts)-
Отправлено 17 года(лет) назад #
-
Честно говоря, не представляю, что это может быть. Для создания xls-файла используются стандартные системные средства для записи compound-файлов. Так что либо системные средства глючат, либо какой-нибудь антивирус сильно нервно реагирует на запись компаундов. Можно попробовать записать xls-файл в локальный файл, а потом просто скопировать его на диск пользователя.
Отправлено 17 года(лет) назад # -
Антивирусов нет.
На всякий случай проблема тестировалась на двух разных серверах - результаты аналогичные.
Возможности писать в локальный файл - нет (политика безопасности требует сокрытия файловой системы сервера от пользователей).
Возможно тут надо рассматривать алгоритм создания xls-файла на предмет оптимизации.Отправлено 17 года(лет) назад # -
Из под терминала сохранил на диск машины, откуда заходил на сервер, mxl-файл весом 80Мб в формате XLS. Сохранение выполнилось за 13 секунд.
Отправлено 17 года(лет) назад # -
Собственно, я тебе мягко намекаю, что сведений, что ты дал, совершенно недостаточно. А вот выводов насчет того, что надо оптимизировать, ты уже наделал.
Отправлено 17 года(лет) назад # -
Выкладываю обработку для демонстрации проблемы.
Результаты полученные у меня с ее помощью следущие:Размер файла MXL: 1МБ
Запись c:\test.mxl: 0.038 сек.
Запись c:\test.xls: 0.121 сек.Размер файла MXL: 80МБ
Запись c:\test.mxl: 1.766 сек.
Запись c:\test.xls: 9.168 сек.Размер файла MXL: 0.1МБ
Запись \\tsclient\c\test.mxl: 4.731 сек.
Запись \\tsclient\c\test.xls: 325.392 сек.первые два блока - запись на локальный диск сервера
последний блок - запись на диск клиента, подключенного к серверу через интернет.
Пропускная способность интернет-канала - 512 kbps, но время записи mxl указывает, что не скорость канала - узкое место.Отправлено 17 года(лет) назад # -
Значит, возможны две вещи:
1) Все-таки, антивирус. То, что происходит, напоминает ситуацию, когда двум Касперам (на сервере и клиенте одновременно) совместными усилиями удавалось полностью нейтрализовать 1С и блокировать все попытки запустить ее по сети. При этом взвис происходил как раз на открытии МД, который является компаундом. При этом копирование файлов между машинами происходило с нормальной скоростью. Не исключено, что на сервере антивирус не мешает, но стоит на клиенте и уже там оттягивается в полный рост.2) Возможно, какие-то различия в алгоритмах буферизации при записи mxl-файлов и xls-файлов. Возможно, стандартная реализация почти не использует буферизацию, что приводит к повышенному количеству операций записи. Здесь можно попробовать поиграть настройками при создании файла, переписать сохранение под использование временного файла или вообще сделать собственную буферизацию. Т.к. у меня ситуация не вопроизводится, то единственный путь - это через взаимодействие с тобой. Т.е. я буду делать тестовые версии, присылать, а ты тестировать скорость. Это может затянуться надолго, но если тебя это не напрягает, то можно попробовать.
Отправлено 17 года(лет) назад # -
Не исключено, что на сервере антивирус не мешает, но стоит на клиенте и уже там оттягивается в полный рост.
антивирусов нет ни на сервере ни на клиенте
Возможно, стандартная реализация почти не использует буферизацию, что приводит к повышенному количеству операций записи.
Я склоняюсь именно к этой версии
Т.к. у меня ситуация не вопроизводится...
т.е. ты так же через интернет тестировал?
результат выполнения обработки дает пропорциональные соотношения mxl/xls через интернет и локально (по локальной сети)?...то единственный путь - это через взаимодействие с тобой. Т.е. я буду делать тестовые версии, присылать, а ты тестировать скорость. Это может затянуться надолго, но если тебя это не напрягает, то можно попробовать.
буду очень рад участвовать в поиске решения проблемы
Отправлено 17 года(лет) назад # -
Черт, пока не было возможности сделать тестовую версию :( Но завтра-послезавтра постараюсь выслать пробный вариант.
Отправлено 17 года(лет) назад # -
Выслал тестовую версию.
Отправлено 17 года(лет) назад # -
Похоже проблема устранена.
Спасибо.Результаты работы тестовой обработки:
-------------------
SpreadSheet.dll 1.1.4.0 (первоначальный вариант)
Размер файла MXL: 1МБ
Запись c:\test.mxl: 0.035 сек.
Запись c:\test.xls: 0.128 сек.Размер файла MXL: 80МБ
Запись c:\test.mxl: 4.334 сек.
Запись c:\test.xls: 8.844 сек.Размер файла MXL: 0.1МБ
Запись \\tsclient\c\test.mxl: 4.311 сек.
Запись \\tsclient\c\test.xls: 298.692 сек.-------------------
SpreadSheet.dll 1.1.4.0 (тестовый вариант)
Размер файла MXL: 1МБ
Запись c:\test.mxl: 0.047 сек.
Запись c:\test.xls: 0.152 сек.Размер файла MXL: 80МБ
Запись c:\test.mxl: 1.841 сек.
Запись c:\test.xls: 9.567 сек.Размер файла MXL: 0.1МБ
Запись \\tsclient\c\test.mxl: 3.03 сек.
Запись \\tsclient\c\test.xls: 5.149 сек.Размер файла MXL: 1МБ
Запись \\tsclient\c\test.mxl: 33.874 сек.
Запись \\tsclient\c\test.xls: 6.958 сек.-------------------
Отправлено 17 года(лет) назад # -
Спасибо за тестирование :) Похоже, теперь надо наоборот браться за ускорение записи в MXL :)
Отправлено 17 года(лет) назад # -
Похоже, теперь надо наоборот браться за ускорение записи в MXL :)
Тут все нормально: соотношение времени записи mxl/xls вполне соответствует соотношению размеров файлов mxl/xls (при записи через интернет).
Для одного и того же табличного документа размер xls-файла получается в 5-10 раз меньше, чем mxl.
На серваке время записи настолько мало, что на первое место выходят временные затраты по построению xls, а вот при записи через интернет время генерации xls становится незаметным по сравнению со временем передачи информации по сети.
Так что если для mxl и можно что-то оптимизировать, то это размер файла.Отправлено 17 года(лет) назад #
Отправить сообщение
Вы должны войти в систему, чтобы оставлять сообщения.