Я пытался настроить JVM для удаленного мониторинга, но на сервере получал следующую ошибку:
The configuration has not been set for this resource due to : Invalid configuration: Error contacting resource: Can't connect to MBeanServer [{jmx.username=system, jmx.url=service:jmx:rmi:///jndi/rmi://localhost:6969/jmxrmi}]: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: java.net.ConnectException: Connection refused]
Я хочу контролировать сервер tomcat, согласно документу, который я добавил строку подключения к серверу Mbean для удаленного мониторинга в файле /tomcat/bin/catalina.sh
[ $1 != "stop" ] && JAVA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=6969 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
export JAVA_OPTS
После этого я перезапустил службу tomcat. Но не может видеть порт 6969, прослушивающий сервер. После перезапуска tomcat я проверил его с помощью "netstat -an | grep 696". Я думаю, что это проблема. Порт 6969 не используется на этой машине.
Наконец-то я заставил это работать. Я добавил настройку в переменную JAVA_OPTS в сценарии запуска tomcat, как показано ниже:
JAVA_OPTS="-Djava.awt.headless=true -Xms256m -Xmx1024m -XX:PermSize=512m -server -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
Ну вроде правильно на все 100%. Вот что я использую в своей среде Windows:
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=9988
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false
Я думаю, что проблема в двух элементах: Формат. Я вижу, ты поставил:
JAVA_OPTS = "- Dcom.sun.ma ...
Попробуйте дать этому первому элементу «пробел», как я делаю в своей конфигурации. U также может использовать эхо после генерации переменной $ JAVA_OPST и проверить правильность синтаксиса.
Другой - версия JVM. ¿1.5? ¿1.6? ¿JRE? ¿JDK? Попробуйте использовать самую обновленную версию (или хотя бы 1.6), если ваша установка вызывает проблемы.
Вы говорите, что пытаетесь подключиться к удаленному jmx. Тогда как получилось
mx.url = service: jmx: rmi: /// jndi / rmi: // localhost: 6969 / jmxrmi
localhost на машине будет работать ??. Я думаю, вам следует использовать IP-адрес удаленной машины вместо localhost.
1) загрузите jmxterm из: http://wiki.cyclopsgroup.org/jmxterm:download 2) скопируйте загруженный файл jar на тестовый сервер
3) ssh на тестовый сервер
4) на тестовом сервере запустите оболочку JMX:
$ java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost: 20051
(Примечание: порт 20051 - это порт, который ваши серверы используют для JMX. Я просмотрел данные с одного из ваших серверов и увидел следующее в строке javacommand: -Dcom.sun.management.jmxremote.port = 20051. Если тестовый сервер использует другую командную строку java, вам нужно найти тот же параметр и номер порта, если он отличается)
5) Проверьте правильность подключения оболочки:
$> открыть
Вам будет что-то вроде:
rmi: //127.0.1.1 4, сервис: jmx: rmi: /// jndi / rmi: // localhost: 3333 / jmxrmi
6) Перечислите доступные Mbeans, скопируйте и вставьте результат и отправьте мне. Мы рассмотрим, что есть в наличии и что необходимо.
$> фасоль
7) Проверьте атрибуты, доступные для данного bean-компонента:
$> bean-компонент name_of_object from_output_above (ex.net.lag.kestrel: name = queues.weather_updates, type = Config)
$> информация
% 0 - max_age (java.lang.String, rw)
% 1 - max_items (java.lang.String, rw)
% 0 - void add_list (ключ java.lang.String, значение java.lang.String)
% 1 - void remove (ключ java.lang.String)