Устранение неполадок с исключениями EJB cachefull

Со ссылкой на вопрос:: EJB weblogic.ejb20.cache.CacheFullException

Я пытаюсь понять, как контейнер EJB управляет компонентами сущностей, я знаю, что вызовы методов create/finder для объекта EJBHome приводят к загрузке экземпляров компонентов в кеш, но есть ли какая-либо другая операция/конфигурация, которая приводит к загрузке компонентов в кеш (например, отношения, управляемые контейнером)?

Я также вижу очень высокое значение Cache Access Count (миллионы) в консоли weblogic. Как мне отследить эти значения до кода?

У меня max-beans-in-cache установлено на 8000.


person DntFrgtDSemiCln    schedule 03.01.2013    source источник


Ответы (1)


Эта ссылка немного объясняет это, но вы, возможно, уже знаете это http://docs.oracle.com/cd/E11035_01/wls100/perform/EJBTuning.html#wp1143320

Следует отметить, что каждый объектный компонент сопоставляется с одной записью в базе данных, и, следовательно, с максимальным количеством компонентов в кэше, равным 8000, вы эффективно будете хранить до 8000 различных записей. В зависимости от выбранной вами стратегии параллелизма у вас может быть даже менее 8000 уникальных записей, поскольку в кэше разрешено хранить несколько экземпляров ejb с одними и теми же первичными ключами.

С точки зрения кода, я думаю, вызов ejbActivate() будет либо использовать существующий компонент из кеша, либо поместить компонент из пула в кеш. Таким образом, вы можете попробовать некоторые методы ведения журнала в ejbactivate, чтобы подсчитать, сколько раз к нему обращаются. Хотя я не уверен в этом.

Если ваш счетчик доступа к кэшу исчисляется миллионами, но как насчет счетчиков попаданий и промахов кэша? Являются ли попадания в кэш достаточно успешными с 8000 в качестве значения кэша.

person JoseK    schedule 04.01.2013