Согласно документации MSDN, количество прочтений страниц в секунду — это хороший способ решить, связана ли проблема с системой с нехваткой памяти или с проблемой кодирования/утечкой памяти.
Я ищу некоторые советы от других и способы пойти по пути, чтобы узнать больше.
Я использую следующее на своей машине (Windows 7. 64-разрядная версия. 4 ГБ оперативной памяти)
1. InteliJ 10 (Tomcat for my Web Services & JSP for the front end)
2. Oracle 11g
Я пытаюсь определить, в чем/где может быть проблема, поэтому я создал скрипт в JMeter, чтобы запустить его, чтобы немного дросселировать систему для создания данных и поиска данных в системе.
Запуск монитора производительности в течение 10 минут, мои данные следующие:
Page Reads/Sec (Average): 26.841
Pages Input/Pages Fault = Hard Fault % = 5%
Pages Fault/sec (Avg) = 2300
MSDN говорит, что устойчивое значение более 5 чтений страниц в секунду часто является сильным индикатором нехватки памяти, но это устойчивое значение, а не среднее значение. Он всплескивает несколько раз, но в долгосрочной перспективе кажется, что он колеблется между 0-3 с несколькими всплесками, которые достигают очень больших значений.
Я думал, что проблема может быть в утечке памяти; однако после проверки кода и проверки того, что потоки были закрыты (файлы/входы/подключения к БД/и т. д.), я не уверен.
Указывают ли эти данные больше на нехватку памяти, утечку памяти в службах или проблему с конфигурацией?
Редактировать 1: Глядя на кучу
В настоящее время я могу получить доступ только к своей системе разработки, а не к производству. Потребуется координировать свои действия с кем-то еще, чтобы получить доступ к журналам и использовать jvisualVM в системе.
Тем не менее, я сделал несколько дампов системы разработки на прошлой неделе и сегодня. Ничего сумасшедшего в использовании классов, кроме String и char[]. Глядя на монитор, мой размер кучи в разработке составляет 463 863, а максимальный - около 480. Используемый колеблется между 415 и 450.
Использование Eclipse Memory Analyzer и «отчет о предполагаемой утечке» в heapdump показывает 3 подозреваемых проблемы.
1. One instanceo f "org.apache.jasper.servlet.JspServlet" loaded by "org.apache.catalina.loader.StandardClassLoader" Occupies 18.70% The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment[]
2. The thread org.apache.tomcat.util.threads.TaskThread @ http-apr-8080-exec-19 keeps local variables with total size 12.30%. The memory is accumulated in one instance of "org.apache.tomcat.util.threads.TaskThread" loaded by "org.apache.catalina.loader.StandardClassLoader"
3. The thread org.apache.tomcat.util.threads.TaskThread @http-apr-8080-exec-24 keeps local variables with total size 10.72%. The m emory is accumulated in one instance of "org.apache.tomcat.util.threads.TaskThread' loaded by "org.apache.catalina.loader.StandardClassLoader"
У меня сложилось впечатление (может быть, ошибаюсь), что некоторые из них нормальны, поскольку TomCat изначально загружает много материала и сохраняет его.