Я нуждаюсь в помощи, разъясняя использование памяти на сервере CentOS, выполняющем Coldfusion/Apache.
У меня есть сценарий, который читает файл в память, и обработайте ее линию за линией, вставляет в DB и удаляет файл. Не лучший процесс, работающий над ним, но он должен будет сделать на данный момент.
Когда файл читается, он занимается загрузками памяти, он заставлял сервер использовать файл подкачки, и это было действительно безразлично - общим Использованием оперативной памяти в TOP был 3.9/3.9 ГБ, и подкачка была 1.5/1.9
Я должен был перезагрузить его, общая используемая RAM спала приблизительно до 2 ГБ, я запустил скрипт, и это возвратилось до 3 ГБ. Это медленно увеличивается за последние несколько часов до 3.3 ГБ - я все еще получил некоторое пространство, и сайты являются все быстро реагирующими, но память не освобождается.
Также начиная с перезагрузки, FusionReactor показывает моего Max и Выделенную "кучу" как 3.93 ГБ, и Используемый в пределах от 0.3 ГБ к 1 ГБ - который несовместим тому, что говорит TOP, который является CF9 на 58% из 3,9, который составляет приблизительно 2.25 ГБ
Сценарий импортирует данные в течение ночи, таким образом, я предполагаю, когда это будет работать позже, это проникнет в подкачку и замедлит сайт в течение ночи (низкий трафик в течение ночи, но все еще нуждается в фиксации - я должен буду отключить на данный момент),
Так эти 2 вещи я не понимаю:
fileClose
- слишком много CFCs?)ОБНОВЛЕНИЕ - jvm.config, меньше большая часть из него - комментарии
# 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
В настройках кучи сконфигурировано 4 гигабайта, а не 2 - это то, что вам сообщает Xms4096m -Xmx4096m. Пермский размер добавляет еще 200 мегабайт. ваш Новый размер (количество, которое молодой генерал захватывает за одну операцию) очень велик - обычно это число составляет от 64 до 256 метров, что дает поколению пространство для передвижения вверх и вниз по молодой куче.
То, что вы видите активность 3.9g, является правильным, хотя я ожидал увидеть что-то вроде 4.2. Still Top иногда выполняет странные математические операции с выделением памяти JVM.
Вы правы, что ColdFusion / Jrun считывает файл в память (в кучу) целиком - поэтому ваша куча должна быть достаточно большой, чтобы вместить это. Тем не менее, даже небольшой файл, если он запускает молодое поколение, приведет к выделению полного гигабайта из-за вашего параметра newsize.
Если у вас всего 4 гигабайта на сервере, я бы посоветовал вам установить размер новостей и maxnewsize равными 256 м, а размер кучи - 3072 м, например, Xms3072m -Xmx3072m
Эти настройки применяются к 64 бит Сервер CF 9 - если вы используете 32-битную версию, то у вас есть жесткие ограничения в размере около 2 гигабайт для кучи из-за проблемы непрерывной памяти, присущей всем 32-битным платформам. Удачи.