Почему Sonatype Nexus, кажется, занимает кучу памяти и процессорного времени?
Запуск nexus на Amazon Linux на моем экземпляре SC2. Чистая установка, затем я построил небольшой проект против него. Не используется никем, кроме меня.
Когда я впервые запускаю Nexus, загрузка процессора начинается с 97%, а использование памяти - с 20%. Через несколько минут он установится на 2-6% процессора и где-то на 20-40% памяти. На экземпляре 640 МБ это означает где-то между 128 и 256 МБ! Не кажется правильным, тем более что Nexus рекламирует себя как требующий только 28 МБ. В чем дело?
Вот показания из ps aux, если это поможет:
root 25227 0.0 0.1 16980 692 ? Sl 16:05 0:00 /mnt/vol1/nexus-oss-webapp-1.9.1.1/bin/jsw/linux-x86-64/./wrapper /mnt/vol1/nexus-oss-webapp-1.9.1.1/bin/jsw/linux-x86-64/../conf/wrapper.conf
wrapper.syslog.ident=nexus wrapper.pidfile=/mnt/vol1/nexus-oss-webapp-1.9.1.1/bin/jsw/linux-x86-64/./nexus.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/nexus
root 25229 3.0 20.0 1247852 122628 ? Sl 16:05 0:12 java -Dsun.net.inetaddr.ttl=3600 -Dbasedir=. -Djava.io.tmpdir=./runtime/tmp -Djava.library.path=bin/jsw/linux-x86-64/lib -classpath bin/jsw/li
b/wrapper-3.2.3.jar:./runtime/apps/nexus/lib/plexus-classworlds-2.4.jar:./conf/ -Dwrapper.key=GZhnIo3i5ox4LVLp -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=252
27 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.codehaus.plexus.classworlds.launcher.Launcher
(и да, я знаю, что не должен запускаться от имени пользователя root. это всего лишь тест)
Я также должен добавить, что в какой-то момент я попросил nexus проиндексировать центральный репозиторий maven, и когда я это сделал, загрузка ЦП возросла с 30% до 90% и оставалась такой до тех пор, пока я окончательно не убил процесс.
Какие-нибудь мысли?
2 ответа
Я видел, как Nexus использовал много процессоров "%sys" (вместо usr или iowait) при запуске (vmstat/top). Я не до конца понял, но подумал, что это может быть полезным указателем.
Когда я впервые запускаю Nexus, загрузка процессора начинается с 97%, а использование памяти - с 20%. Через несколько минут он установится на 2-6% процессора и где-то на 20-40% памяти. На экземпляре 640 МБ это означает где-то между 128 и 256 МБ!
Я не понимаю, почему Nexus должен занимать 28M кучи, когда вы запускаете экземпляр с 640M; просто начните контекст с количества максимальной оперативной памяти, которую вы хотите дать. Если у вас есть большое количество репозиториев, использование памяти может резко возрасти. Использование ЦП связано с поддержанием индексов в реальном времени.
Я также должен добавить, что в какой-то момент я попросил nexus проиндексировать центральный репозиторий maven, и когда я это сделал, загрузка ЦП возросла с 30% до 90% и оставалась такой до тех пор, пока я окончательно не убил процесс.
Если вы имеете в виду запланированное задание "переиндексация", оно вам не нужно для зеркального хранилища. Переиндексация может быть очень тяжелой задачей, которая действительно полезна только для локально размещенных репозиториев, в которых вы думаете, что произошло повреждение метаданных maven, или если вы модифицируете файловую систему nexus вне nexus. Вам нужно только "загрузить индексы" и "опубликовать индексы" для зеркальных репозиториев.
Этот пост в блоге объясняет запланированное задание в деталях:
http://www.sonatype.com/people/2009/09/nexus-scheduled-tasks/