Ага. Оказывается для многих это проблема. А приезжать в кафе и конвертировать в услвоиях московских пробок - надоело. А здесь бы клиент драг-дропом бросил, я конвертнул - ссылку по почте выслал. Ляпота!
Ну.... доверие имеет разные степени. Сейчас все происходит по дурацки - я прошу залить в Dropbox или подобные, потом качаю к себе, конвертирую, выгружаю обратно, человек качает. И здесь два плохих момента. 1) Люди не доверяют Dropbox и подобное. 2) 4 загрузки и выгрузки видео - уходит много времени. Поэтому мне нужно, чтобы люди грузили файлы в систему с моим логотипом - здесь доверия больше. И чтобы не было ничего заумного - слов шаринг, иконки соцсетей и прочего. То есть по сути, окно загрузки файла, окно просмотра папки загрузки, окно выгрузки файла - и все.
Это слишком сложно. :) Фактически - это виедохостинг + шаринг. А мне как раз шаринг не нужен. Клиенты будут заливать частное видео (дети, путешествия и пр.). Они наборот все поголовно "не доверяют Интернету".
Но в данном случае, проблема в том, что вызов метода в контроллере фиксируется нормальный, а дальше - все. В лог больше ничего не пишется. Я пробовал несколько раз дожидаться ситуации 504, но в логе последняя строка остается
I, [2014-06-10T01:39:33.705358 #32681] INFO -- : Parameters:{"user_id"=>"5661", "token"=>"******"}
При этом Passenger больше не реагирует ни на что, кроме рестарта. В этом и проблема, что не могу локализовать, в чем проблема. :(
I, [2014-06-10T01:39:30.650653 #32506] INFO -- : Started GET "/user/****/admin/helpdesk/statusbar?user_id=5661" for 198.100.*.* at 2014-06-10 01:39:30 -0400
I, [2014-06-10T01:39:30.684116 #32506] INFO -- : Processing by UserAdminHelpdeskController#statusbar as HTML
I, [2014-06-10T01:39:30.684208 #32506] INFO -- : Parameters: {"user_id"=>"5661", "token"=>"****"}
I, [2014-06-10T01:39:33.669684 #32681] INFO -- : Started GET "/user/*****/admin/helpdesk/statusbar?user_id=5661" for 198.100.*.* at 2014-06-10 01:39:33 -0400
I, [2014-06-10T01:39:33.705268 #32681] INFO -- : Processing by UserAdminHelpdeskController#statusbar as HTML
I, [2014-06-10T01:39:33.705358 #32681] INFO -- : Parameters: {"user_id"=>"5661", "token"=>"******"}
И все. Дальше я его завершаю и рестартую. И лог идет дальше, как ни в чем не бывало.
I, [2014-06-10T01:49:07.396657 #1720] INFO -- : Started GET "/user/***/agreements/stat?stat=pp%2C0%2C0%2C%2C%2Ctc%2C0%2C101" for 85.140.*.* at 2014-06-10 01:49:07 -0400
I, [2014-06-10T01:49:07.432364 #1720] INFO -- : Processing by UserController#agreements_stat as */*
I, [2014-06-10T01:49:07.432455 #1720] INFO -- : Parameters: {"stat"=>"pp,0,0,,,tc,0,101", "token"=>"****"}
I, [2014-06-10T01:49:07.591718 #1720] INFO -- : Filter chain halted as :is_user_access_granted rendered or redirected
I, [2014-06-10T01:49:07.591866 #1720] INFO -- : Completed 200 OK in 159ms (Views: 0.3ms | ActiveRecord: 58.6 ms)
В базе около 25 млн. записей. Когда я смотрю Explain, я четко вижу при первом запуске тысячи обращений к диску, на втором запуске - сотни, на третьем все читается из памяти и запрос выполняется за сотни миллисекунд. Поскольку к какому фрагменту обращаться будут - неизвестно, закешировать что-то нет смысла, а для переноса всей базы в память надо более 40 гигов.
Под grep и прочим, я только понимаю, что и они читаются очень часто с диска, то есть если бы частое чтение с диска убивало бы его, то простой запуск этих утилит, скажем, из крона, по логике тоже должно было бы убивать диск. Или по другому. Мой способ может убить диск не сильнее, чем обычные бинарные linux утилиты.