2014-10-17 2 views
0

В приложении Rails время от времени было создано множество сеансов по мере роста базы данных производства. В качестве обходного пути я время от времени удаляю сеансы. Я хотел бы исправить эту проблему, но я понятия не имею, как отлаживать подобную ситуацию. Данные сеанса довольно малы, поэтому я могу переключиться на хранилище файлов cookie, но это не решит проблему. Каков наилучший способ отладки такой ситуации? И какова могла быть причина для создания множества новых сеансов?Почему новые сессии создаются все время?

Я единственный пользователь приложения, он работает на локальной виртуальной коробке, но может быть замечен другими. Мой контекст:

  • Rails 4.0.0 (не было времени для обновления в последнее время)
  • SQLite3
  • рубин 1.9.3p547

После задал вопрос, у меня была встреча (так что не активное использование приложения Rails), и когда я вернулся, запрос

sqlite> select created_at, updated_at from sessions where updated_at > "2014-10-17"; 

показал следующий результат:

2014-10-17 07:49:56.202187|2014-10-17 07:49:56.202187 
2014-10-17 07:50:26.039702|2014-10-17 07:50:26.039702 
2014-10-17 07:50:56.043092|2014-10-17 07:50:56.043092 
2014-10-17 07:51:26.057016|2014-10-17 07:51:26.057016 
2014-10-17 07:51:56.163507|2014-10-17 07:51:56.163507 
2014-10-17 07:52:26.071406|2014-10-17 07:52:26.071406 
2014-10-17 07:52:56.191103|2014-10-17 07:52:56.191103 
2014-10-17 07:53:26.070792|2014-10-17 07:53:26.070792 

Так что, по-видимому, существует регулярное расписание, когда запросы ведут к новым сеансам. Как я могу найти причину этого?


Обновление: Я интегрировал logging from another answer и теперь записи журнала соответствует записи сеанса. Следующий шаг - найти настоящего отправителя. Является более сложным, потому что я использую брандмауэр и переадресацию портов, поэтому все запросы внутри приложения Rails поступают с одного и того же компьютера (хоста).

+0

Вы используете 'devise' gem? –

+0

Нет, я не знаю. В этом приложении Rails нет аутентификации/авторизации. URL может использовать приложение (но у меня нет признаков того, что это происходит). – mliebelt

+0

Мое первое предположение - это роботы или какой-либо скрипт, опробовавший веб-сайт, тем более, что они создаются равномерно каждые 30 секунд. Попробуйте получить IP-адреса этих запросов , – BroiSatse

ответ

0

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

Я копаю немного глубже и обнаружил, что «Начальная страница» из Opera содержала в качестве одной из записей призыв к моему Rails-приложению. После удаления этой записи с «Начальной страницы» больше не было создано никаких сеансов.

Итак, решение для меня - не иметь ссылки со стартовой страницы. Я никогда бы не подумал, что это может быть так :-(

Смежные вопросы