Йоксель » Главный форум

Проблемы с записью на диск в терминале

(13 posts)
  1. testotest
    Участник

    При подключении к терминальному серверу используется автоматическое подключение локальных дисков компьютера клиента.
    После формирования табличный документ отображен в элементе управления на форме.
    Необходимо сохранить документ на локальный диск клиента, например с таким именем - \\tsclient\c\test.xls.
    После выдачи команды на сохранение программа практически зависает, т.е. сохранение файла всетаки идет, но может длиться часами.
    В тоже время, если сохранять тот же документ в формате mxl - проблем нет.
    Тестировалось на файлах размером до 100КБ (mxl).

    Отправлено 17 года(лет) назад #
  2. Честно говоря, не представляю, что это может быть. Для создания xls-файла используются стандартные системные средства для записи compound-файлов. Так что либо системные средства глючат, либо какой-нибудь антивирус сильно нервно реагирует на запись компаундов. Можно попробовать записать xls-файл в локальный файл, а потом просто скопировать его на диск пользователя.

    Отправлено 17 года(лет) назад #
  3. testotest
    Участник

    Антивирусов нет.
    На всякий случай проблема тестировалась на двух разных серверах - результаты аналогичные.
    Возможности писать в локальный файл - нет (политика безопасности требует сокрытия файловой системы сервера от пользователей).
    Возможно тут надо рассматривать алгоритм создания xls-файла на предмет оптимизации.

    Отправлено 17 года(лет) назад #
  4. Из под терминала сохранил на диск машины, откуда заходил на сервер, mxl-файл весом 80Мб в формате XLS. Сохранение выполнилось за 13 секунд.

    Отправлено 17 года(лет) назад #
  5. Собственно, я тебе мягко намекаю, что сведений, что ты дал, совершенно недостаточно. А вот выводов насчет того, что надо оптимизировать, ты уже наделал.

    Отправлено 17 года(лет) назад #
  6. testotest
    Участник

    Выкладываю обработку для демонстрации проблемы.
    Результаты полученные у меня с ее помощью следущие:

    Размер файла 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 указывает, что не скорость канала - узкое место.

    Attachments

    1. test.zip (11.6 KB, 119 downloads) 17 года(лет) old
    Отправлено 17 года(лет) назад #
  7. Значит, возможны две вещи:
    1) Все-таки, антивирус. То, что происходит, напоминает ситуацию, когда двум Касперам (на сервере и клиенте одновременно) совместными усилиями удавалось полностью нейтрализовать 1С и блокировать все попытки запустить ее по сети. При этом взвис происходил как раз на открытии МД, который является компаундом. При этом копирование файлов между машинами происходило с нормальной скоростью. Не исключено, что на сервере антивирус не мешает, но стоит на клиенте и уже там оттягивается в полный рост.

    2) Возможно, какие-то различия в алгоритмах буферизации при записи mxl-файлов и xls-файлов. Возможно, стандартная реализация почти не использует буферизацию, что приводит к повышенному количеству операций записи. Здесь можно попробовать поиграть настройками при создании файла, переписать сохранение под использование временного файла или вообще сделать собственную буферизацию. Т.к. у меня ситуация не вопроизводится, то единственный путь - это через взаимодействие с тобой. Т.е. я буду делать тестовые версии, присылать, а ты тестировать скорость. Это может затянуться надолго, но если тебя это не напрягает, то можно попробовать.

    Отправлено 17 года(лет) назад #
  8. testotest
    Участник

    Не исключено, что на сервере антивирус не мешает, но стоит на клиенте и уже там оттягивается в полный рост.

    антивирусов нет ни на сервере ни на клиенте

    Возможно, стандартная реализация почти не использует буферизацию, что приводит к повышенному количеству операций записи.

    Я склоняюсь именно к этой версии

    Т.к. у меня ситуация не вопроизводится...

    т.е. ты так же через интернет тестировал?
    результат выполнения обработки дает пропорциональные соотношения mxl/xls через интернет и локально (по локальной сети)?

    ...то единственный путь - это через взаимодействие с тобой. Т.е. я буду делать тестовые версии, присылать, а ты тестировать скорость. Это может затянуться надолго, но если тебя это не напрягает, то можно попробовать.

    буду очень рад участвовать в поиске решения проблемы

    Отправлено 17 года(лет) назад #
  9. Черт, пока не было возможности сделать тестовую версию :( Но завтра-послезавтра постараюсь выслать пробный вариант.

    Отправлено 17 года(лет) назад #
  10. Выслал тестовую версию.

    Отправлено 17 года(лет) назад #
  11. testotest
    Участник

    Похоже проблема устранена.
    Спасибо.

    Результаты работы тестовой обработки:

    -------------------

    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 года(лет) назад #
  12. Спасибо за тестирование :) Похоже, теперь надо наоборот браться за ускорение записи в MXL :)

    Отправлено 17 года(лет) назад #
  13. testotest
    Участник

    Похоже, теперь надо наоборот браться за ускорение записи в MXL :)

    Тут все нормально: соотношение времени записи mxl/xls вполне соответствует соотношению размеров файлов mxl/xls (при записи через интернет).
    Для одного и того же табличного документа размер xls-файла получается в 5-10 раз меньше, чем mxl.
    На серваке время записи настолько мало, что на первое место выходят временные затраты по построению xls, а вот при записи через интернет время генерации xls становится незаметным по сравнению со временем передачи информации по сети.
    Так что если для mxl и можно что-то оптимизировать, то это размер файла.

    Отправлено 17 года(лет) назад #

RSS экспорт этой темы

Отправить сообщение

Вы должны войти в систему, чтобы оставлять сообщения.