Требуется CGI (или другое решение, совместимое с IIS 7) для обработки * массивных * загрузок

1

Нам нужно обрабатывать массивные загрузки файлов, не тратя ресурсы на сервере IIS 7. Чтобы подчеркнуть, насколько это необходимо, скажите, что нам нужно обрабатывать закачки файлов с размерами, которые совершенно безумны, например, загрузки 100 ГБ, или что-то, что может продолжаться в течение очень долгого времени, не потребляя дополнительных ресурсов. В принципе нам нужно что-то, что дает нам контроль над приемом файла с момента его начала до момента его окончания.

Немного фона:

Мы используем ColdFusion в качестве серверного процессора, но нам это не удалось, когда мы загружаем файлы объемом около 1 ГБ, и мы исчерпали наши параметры конфигурации. Там стоит долгая история, но по существу, если страница .cfm(ColdFusion) является местом назначения загрузки файла и занимает около 1 ГБ, она дает ошибку 503... даже если целевой файл не существует. Настолько ясно, что многое происходит просто, сообщая серверу, что мы намерены обрабатывать файл с помощью .cfm-страницы.

Мы подозреваем, что это связано с ограничениями Java, потому что сервер (или, действительно, рабочая станция в этом случае) не показывает никаких признаков загрузки процессора или памяти. Поскольку у нас ограниченная память, и этот сайт предназначен для большого количества одновременных загрузок, мы не можем доверять простому увеличению использования памяти виртуальной машины, особенно потому, что это просто не работает в настоящее время даже для одного соединения... не говоря уже о сотни параллельных соединений, которые мы ожидаем, когда мы будем жить.

Итак, мы собираемся написать специализированное решение с использованием CGI, которое будет обрабатывать только файлы. В принципе, нам нужно контролировать серверную сторону, с которой мы не сталкиваемся с ColdFusion или ASP.NET, потому что эти технологии делают так много вещей самостоятельно, за кулисами, не давая нам контроля, который нам нужен. Они всегда в конечном итоге тратят слишком много ресурсов так или иначе по вполне очевидной причине; то, что мы пытаемся сделать, совершенно безумно, а не намеченная функция этих технологий. Вот почему мы хотим, чтобы специализированный загрузчик через CGI, который обошел все это волшебство ColdFusion/ASP.NET, которое мешает, надеясь, что он даст нам необходимый нам контроль.

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

Единственное реальное ограничение здесь заключается в том, что он должен быть CGI, и он должен запускаться на IIS 7, поэтому в среде Windows "Server". Мы в порядке с тем, что он написан на Python, Perl, назовите его... если он может работать как CGI, но он должен запускаться как CGI... если, конечно, у кого-то есть лучшие идеи о том, как это сделать.

Итак, магический вопрос; есть ли там решения CGI, которые уже делают это, или мы застреваем, написав это самостоятельно, надеясь, что причина, по которой никто другой не сделал этого, уже есть нечто иное, чем это невозможно?

Спасибо заранее.

Теги:
cgi
iis
iis-7

3 ответа

4
Лучший ответ

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

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

Каковы ваши ограничения на клиента, хотя (если есть)? Можете ли вы использовать java-апплет? Возможно, у вас есть клиентское приложение?

Одной из возможных отправных точек для решения на основе браузера будет jupload проект с открытым исходным кодом, но есть много других.

  • 0
    Java / Flash апплеты в порядке. На самом деле, я использую Flash-апплет справа (SWFUpload) на стороне клиента. Хотя это не может быть целое внешнее приложение, оно должно быть на веб-сайте. Я посмотрю на JUpload, спасибо!
3

Вы хотите WebDAV, а не CGI. Он предоставляет все приятные биты, которые не переносят передачи файлов, например, возобновление и приостановка.

  • 0
    Это отличная рекомендация, я посмотрю на это, спасибо!
-1

стек стеков Windows ограничен загрузкой файлов объемом 4 ГБ. Больше, чем это невозможно.

  • 3
    Нужна цитата. Мне трудно поверить, что Windows не может передавать файлы размером более 4 ГБ, когда многие распространенные типы файлов (в частности, образы DVD) часто значительно больше.
  • 0
    Не знаю о пределе стека TCP, но FAT32 не может обрабатывать файлы размером более 4 ГБ, возможно, именно об этом он и говорит.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню