Jruby, Сборщик мусора, Redis - PullRequest
       14

Jruby, Сборщик мусора, Redis

0 голосов
/ 19 сентября 2011

У меня есть приложение Jruby On Rails, которое использует несколько WS для сбора данных. Приложение обрабатывает данные, отображает их для пользователя, пользователь вносит свои изменения и затем отправляет обратно в WS.

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

ActionView::Template::Error (GC overhead limit exceeded)

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

Итак, вот вопросы.

  • Как я могу обойти это?
  • Если я переключусь с хранилища памяти на Redis, если мои предположения верны, эта проблема все еще будет появляться.
  • Будет ли GC пытаться освободить область памяти Redis? (Это может быть глупый вопрос, но, тем не менее, пожалуйста, помогите :))

Спасибо.

1 Ответ

0 голосов
/ 20 сентября 2011

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

...