taskset (2.13-pre7 util-linux) использование: taskset [опции] [маска | список CPU] [pid | cmd [args...]] набор или получают привязку процесса
- p, - pid воздействует на существующий данный pid-c, - дисплей списка CPU и указывает CPU в формате списка-h, - справка отображает эту справку-v, - информация о версии вывода версии
Поведение по умолчанию состоит в том, чтобы выполнить новую команду: taskset 03 sshd-b 1024 можно получить маску существующей задачи: taskset-p 700 Или набор это: формат списка taskset-p 03 700 использует разделенный запятыми список вместо маски: taskset - ПК 0,3,7-11 700 Диапазонов в формате списка может взять аргумент шага: например, 0-31:2 эквивалентно маске 0x55555555
Вы можете alway оптимизировать Вас сервер как u r потребность
javac
обычно порождает отдельный процесс, который должен упасть под различными правилами процесса.
-J
опции для передачи args через обертку/средство запуска к JVM, я не видел это на Tomcat.
Узнайте, куда-Xmx прибывает из:
find /your/install/dir/with/tomcat |xargs grep '-Xmx'
В отсутствии альтернатив я попробовал грязный взлом: замена java
и javac
сценариями оболочки, которые гарантируют, что надлежащие аргументы передаются и позволяют мне видеть точный список параметров. Начиная с этого в уже попытке очень определенного решения и не части вопроса, я feld как помещение его в ответ.
Я искал все происшествия java
в моей файловой системе. Был путь ко многим, потому что у меня есть несколько JREs и JDKs на моей машине. Даже после удаления всех кроме одной версии, были все еще многие из них. Я использовал find / -name "java" |xargs file
узнать, который является реальным. Это сказало мне:
/var/lib/dpkg/alternatives/java: ASCII text
/etc/alternatives/java: symbolic link to `/usr/lib/jvm/java-6-sun/jre/bin/java'
/usr/share/java: directory
/usr/lib/jvm/java-6-sun-1.6.0.16/bin/java: symbolic link to `../jre/bin/java'
/usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/java: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped
/usr/bin/java: symbolic link to `/etc/alternatives/java'
Таким образом, я знал это /usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/java
был исполняемый файл. Я переименовал его к javaexec
и помещенный сценарий оболочки в он - старое местоположение:
mv /usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/java /usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/javaexec
nano /usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/java
(see below for file contents)
chmod +x #!/bin/bash -e
Это гарантирует что каждый вызов к java
в конечных точках к моему сценарию, который назовет исполняемый файл с правильными параметрами. После этого я сделал подобные ужасные вещи к javac
. Содержание моего сценария:
#!/bin/bash -e
line=""
for i in $*
do
if [[ "$i" == *Xmx* ]]; then
echo "Seen -Xmx and removed"
elif [[ "$i" == *MaxPerm* ]]; then
echo "Seen -XX:MaxPermSize and removed"
else
line="$line $i"
fi
done
exec="/usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/javaexec -Xms10m -Xmx100m $line"
echo Now executing $exec
$exec
Это удаляет каждый параметр из командной строки, которая включает -Xmx
или что-то как -XX:MaxPermSize
и вставляет его собственный-Xms и пределы-Xmx.
Когда я теперь запускаю Tomcat, он все еще перестал работать, но наконец, JVM запускает, делает что-то и затем выходит со значимым сообщением. Никакой успех барабана, но это оставляет меня намного более удовлетворенным, с тех пор оттуда на, я знаю, что сделать. В то время как Tomcat все еще не работает, он имеет хороший побочный эффект:
Теперь я могу наконец звонить java
или javac
на командной строке или из сценария, и они не отказывают, который прежде не был возможен вообще! Они просто работают! Эй, я чувствую себя подобно королю слова, я наконец заставил Java работать на машине с 44 ГБ Ram без complaing о недостаточно памяти. Это - великий день в истории вычислений, действительно!
-XX:MaxPermSize
& c, Вы won' t хотят проигнорировать их.
– Jé Queue
20 December 2009 в 16:59
Попытайтесь работать ulimit -v unlimited
перед стартовым котом. Если это работает, можно, вероятно, добавить это к одному или обоим из сценариев запуска, или в /etc/profile
, ~/.bashrc
или некоторая другая оболочка представляет сценарий.
ulimit -a
? Очевидно, I' m согласился на него являющийся проблемой ulimit ;)
– violet
20 December 2009 в 15:25
Вы могли также проверить Java vms, что Вы установили. Удостоверьтесь, это не gcj среда, это дает Вам проблемы.
попробовать
update-java-alternatives -l
видеть, является ли солнце-java6 Вашим значением по умолчанию. Отбросьте "-l" для наблюдения других опций для этой команды - например, как изменить значение по умолчанию.
Если я помню правильно, все проблемы Java, которые я имел на человечности, имели свой корень в gcj быть значением по умолчанию (это, возможно, вошло как некоторая зависимость до солнца-java6). Если я не помню правильно, это - по крайней мере, большинство проблем.
Наконец, что не менее важно, (и только связанный с Вашим вопросом): можно поместить файл, названный "setenv.sh" в каталог bin кота. Этот файл не там, но будет считан на запуске, если это может быть найдено. Можно внести все изменения здесь, чтобы обратиться к ним позже. Единственный незначительный недостаток, что они будут считаны на запуске, а также на завершении работы.
После того как у меня была подобная проблема. Можно попробовать, запускают Java с
vm.overcommit_memory=1
набор в/etc/sysctl.conf. Или просто эхо "1" > /proc/sys/vm/overcommit_memory
Или игра с overcommit_memory, overcommit_ratio http://www.redhat.com/magazine/001nov04/features/vm/