Preciso de ajuda para esclarecer o uso da memória em um servidor CentOS que executa Coldfusion / Apache.
Eu tenho um script que lê um arquivo na memória e o processa linha por linha, insere no banco de dados e exclui o arquivo. Não é o melhor processo, trabalhando nisso, mas terá que ser feito por enquanto.
Quando o arquivo é lido, ele ocupa um monte de memória, fazendo com que o servidor use o arquivo de troca e não responde - o uso total de RAM no TOP foi de 3.9 / 3.9 GB e o swap foi de 1.5 / 1.9
Eu tive que reiniciá-lo, o total de RAM usada caiu para cerca de 2GB, eu corri o script e ele voltou para 3GB. Ele aumentou lentamente nas últimas horas para 3,3 GB - ainda tenho espaço e os sites são responsivos, mas a memória não está sendo liberada.
Além disso, desde a reinicialização, o FusionReactor mostra meu Max and Allocated Heap como 3.93GB e Used variando de 0.3GB a 1GB - o que é inconsistente com o que TOP diz, que é CF9 em 58% de 3.9, que é de cerca de 2.25GB
O script importa os dados durante a noite, então eu acho que quando for executado mais tarde, ele vai cair na troca e atrasar o site durante a noite (baixo tráfego durante a noite, mas ainda precisa ser corrigido - eu vou ter que desativar por enquanto)
Então as duas coisas que eu não entendo:
- por que a RAM não está caindo de 3 - > 2 quando o arquivo foi lido e o script foi concluído (faltando um
fileClose
- CFCs demais?)
- por que minha pilha usada de memória do FusionReactor mostra um máximo de 1 GB, quando TOP mostra 58% de 3,9 GB (2,25 GB) para CF9
UPDATE - jvm.config, menos a maioria dos comentários
# Where to find JVM
java.home=/opt/coldfusion9/runtime/jre/
# Arguments to VM
java.args=-server -Djava.awt.headless=true -Xms4096m -Xmx4096m
-Dsun.io.useCanonCaches=false -XX:ParallelGCThreads=2 -XX:PermSize=64m
-XX:+UseConcMarkSweepGC -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=4
-XX:+UseParNewGC -XX:MaxPermSize=192m -Dcoldfusion.rootDir={application.home}/../
-Dcoldfusion.libPath={application.home}/../lib -Dcoldfusion.classPath=
{application.home}/../lib/updates,{application.home}/../lib,
{application.home}/../gateway/lib/,{application.home}/../wwwroot/WEB-INF/flex/jars,
{application.home}/../wwwroot/WEB-INF/cfform/jars -
javaagent:/opt/fusionreactor/instance/coldfusion.CF9Standalone.cc02/
fusionreactor.jar=name=coldfusion.CF9Standalone.cc02,address=8088
# commas will be converted to platform specific separator and the result will be passed
# as -Djava.ext.dirs= to the VM
java.ext.dirs={jre.home}/lib/ext
# where to find shared libraries
java.library.path={application.home}/../lib
system.path.first=false
# set the current working directory
java.user.dir={application.home}/../../lib
# JVM classpath
java.class.path={application.home}/servers/lib,{application.home}/../lib/
macromedia_drivers.jar,
{application.home}/lib/cfmx_mbean.jar,{application.home}/../lib/oosdk/classes,
{application.home}/../lib/oosdk/lib,{application.home}/lib