LINUX.ORG.RU

Ruby, passenger, nginx, куда сохраняется временный файл?

 , ,


0

1

Здравствуйте.
Есть страничка на sinatrarb, в которой происходит загрузка файла, и сохранение его по пути /data/XX/filename
code http://pastebin.com/AdsVif8j

Когда я использовал в качестве веб-сервера gem shotgun то при загрузке файла, он полностью считывался в ОЗУ и уже после записывался на диск.

Сейчас веб-сервер nginx + passenger_module и при загрузке файла, он не пишется в ОЗУ, а пишится во временную папку (судя по тому, что место растет df -h) Но вот в какую именно папку он пишется я понять не могу. В temp папках nginx ничего не появляется
В папке с passenger каких либо временных файлов нет.
Я ставил на закачку файл в 10гб и пробовал найти папку по du -sh /* , но так получилось, что df -h говорит что место занято, а в du -sh /* какого либо роста нет.
Видимо я чего-то не знаю.
Помоги понять куда пишется тело запроса в момент загрузки файла, при использование nginx + passenger_module.

/data/XX/filename

find / -name 'filename'

но так получилось, что df -h говорит что место занято, а в du -sh /* какого либо роста нет.

Если ты в приложении можешь потянуть время ( открыть файл и не закрывать его) , то поможет lsof

З.Ы. никто не мешает фреймворку создавать файл уже удалённым. Заодно не придётся чистить мусор при падении веб-сервера. Тогда поможет только lsof, но не find

router ★★★★★ ()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

>> /data/XX/filename

find / -name 'filename'

После того как файл полностью передасться веб-серверу, он его перемещает из «мифической темп папки» в /data/XX/filename, это видно все по томуже df -h как место в /data/ растёт, а в / резко уменьшается, ессно место занимаемое на диске равно размеру файла.

то поможет lsof

Спасибо, о нём я не подумал. Попробую.

З.Ы. никто не мешает фреймворку создавать файл уже удалённым. Заодно не придётся чистить мусор при падении веб-сервера.


То есть вы предлагаете писать файл сразу в хранилище ? миную временный файл.
Как это сделать я пока себе не представляю.

tierpunk ()
Ответ на: комментарий от anonymous

Спасибо, но это было первым что я попробовал, просто забыл описать.
Команда STDERR.puts tempfile.path в логе пишет
App 7149 stderr: /tmp/RackMultipart20140425-7259-805md3
Но в папке /tmp/ файлы не появляются, и не создаются.
Ладно буду пытаться решить проблему дорогой операции перемещение файла из временной папки в хранилище, другим способом.

tierpunk ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.