De fato, os limites de memória da JVM são controlados por parâmetros de inicialização como -Xmx2048m -Xms256m -XX:MaxPermSize=512m
(é exemplo). A JVM usará essa memória permitida. Aplicação estável não vazando não sairá dos limites.
De volta ao monitoramento, é possível ativar o agente SNMP interno da JVM e, em seguida, monitorar o uso de heaps e PermGen e, através da comunidade SNMP privada, é possível configurar limites quando excedidos. A JVM enviará traps SNMP. Na verdade, é "solução corporativa de monitoramento" por ferramentas como o HP OpenView. Parâmetros de linha direta envolvidos:
-Dcom.sun.management.snmp.port=10001 -Dcom.sun.management.snmp.acl=/home/liferay/snmp.acl -Dcom.sun.management.snmp.interface=0.0.0.0
Eles são auto-explicativos. O modelo de arquivo ACL está em JRE_HOME/lib/management/snmp.acl.template
.
Para obter respostas legíveis e não apenas SNID OIDs, faça o download do JVM-MANAGEMENT- MIB.mib . Algumas explicações breves são aqui no site da Oracle .
Quando o SNMP está ativado, você pode verificar os indicadores retornados executando:
snmpwalk -v2c -c public YourWinHost:10001 -m JVM-MANAGEMENT-MIB jvmMgtMIB
Espera-se que você coloque JVM-MANAGEMENT-MIB.mib
no diretório Net-SNMP MIB padrão (linha de comando Unix ou CygWin).
Para não esquecer o envio de e-mails, estou fazendo o monitoramento da JVM pelo Zabbix em conjunto com o SNMP no cluster que executa o cluster de back-end em todo o país do Post Escritório. Ele cobre todos os requisitos de monitoramento de tempo de execução. O Zabbix pode enviar um e-mail ou uma mensagem Jabber IM no caso de algum gatilho ser disparado. O Zabbix suporta o monitoramento de agente SNMP e o SNMP também. Fiz o teste mensal de serviços na nuvem, quando a JVM monitorada estava em algum lugar nos EUA e o servidor Zabbix na Irlanda ... funcionava bem mesmo para tais distâncias / atrasos. Desde a versão 2.0, o monitoramento JMX é possível, mas, para ambientes seguros, pode ser complicado, pois o JMX-RMI configura algumas portas aleatórias.
Em geral, o SNMP é suficiente para o monitoramento do tempo de execução da JVM e o JMX pode ajudar mais em máquinas de desenvolvimento / teste, pois pode monitorar nuances de aplicativos.
Se você estiver na nuvem com sua máquina Windows, poderá usar um dos serviços de monitoramento SaaS. Fiquei bastante impressionado com os serviços NewRelic . É fácil de configurar e realmente útil para fases de desenvolvimento / teste, porque pode fazer coisas como despejos de threads, consultas SQL lentas a.s.o. Pode enviar emails quando o limite é atingido.