Утечка памяти в Memcached - PullRequest
       7

Утечка памяти в Memcached

0 голосов
/ 27 февраля 2012

Я создаю какое-то приложение, где мне нужно использовать memcached.

Я нашел довольно хороший клиент:

net.spy.memcached.MemcachedClient

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

Я искал возможность для тесного соединения, и я нашел метод "shutdown",Но если я использую этот метод следующим образом:

MemcachedClient c = new MemcachedClient(new InetSocketAddress(
                        memcachedIp, memcachedPort));
c.set(something, sessionLifeTime, memcache.toJSONString());
c.shutdown();

У меня проблема с добавлением чего-либо, что делает memcached - в логах я вижу, что этот метод открывает соединение, и прежде чем он добавит что-либо в memcached, он закрываетсоединение.

У вас есть идея, что делать?

Дополнительно - я нашел метод: c.shutdown(2, TimeUnit.SECONDS); - который должен закрыть соединение через 2 секунды, но я подключил монитор jmx к своемуtomcat и я вижу, что Memcached thread не заканчивается через 2 секунды - этот поток не закончен вообще ...

1 Ответ

1 голос
/ 28 февраля 2012

Причина, по которой у вас возникают проблемы с добавлением вещей в memcached, например, в том, что функция set (...) является асинхронной, и все, что она делает, это помещает эту операцию в очередь для отправки в memcached.Поскольку вы вызываете shutdown сразу после этого, на самом деле операция не успевает выйти на провод.Вам нужно вызвать set (...). Get (), чтобы поток приложения действительно ждал завершения операции, прежде чем вызывать завершение работы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...