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

Нам нужно обрабатывать массовые загрузки файлов без затрат ресурсов на сервер 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-решения, которые уже делают это, или мы застряли в написании этого самостоятельно, надеясь, что причина, по которой еще никто не сделал этого, заключается в том, что это невозможно?

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 30 марта 2011

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

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

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

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

3 голосов
/ 30 марта 2011

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

0 голосов
/ 30 марта 2011

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

...