Мы — магазин программного обеспечения, который пишет много кода Java. Большинство наших серверов приложений Java — это CentOS-боксы, размещенные в удаленном центре обработки данных.
Всякий раз, когда нам нужно залезть в эти машины и что-то там просмотреть, мы используем PuTTY.
Недавно меня попросили следить за нашей JVM с помощью jvisualvm
профилировщика памяти, который является богатым инструментом GUI, использующим множество графиков и диаграмм с красивыми цветами. Когда я спросил своего технического руководителя, как я могу просматривать такой инструмент GUI поверх инструмента с символьными командами, такого как PuTTY, он посоветовал мне использовать нечто под названием Reflection X.
Это побудило меня почитать о Reflection X и X Windows в целом (с которыми я никогда не имел дела).
Теперь я понимаю, что «X» — это уровень абстракции оборудования, позволяющий писать код, ориентированный на графический интерфейс, и развертывать его на любом оборудовании, на котором может работать X. Таким образом, он идентичен (по теме) виртуальной машине Java.
То, что янетпонимание — это взаимосвязь между моим ПК с Windows, Reflection X, машиной CentOS, на которой запущено приложение, которое мне нужно профилировать, и jvisualvm
самим инструментом:кто что делает?
Работает ли Reflection X на моей машине или он установлен на сервере Linux? Что в Reflection X такого, что позволит мне просматривать jvisualvm
удаленно?
Заранее спасибо!
решение1
Программа jvisualvm просто запускается на вашем CentOS-ящике. На этом ящике запущен X Server Host, а Reflection X — это просто клиент X Server. Это означает, что вы по сути запускаете удаленно управляемый рабочий стол. Все, что делает ваша машина Windows с Reflection X, — это подключается к ящику CentOS, чтобы вы могли видеть и взаимодействовать с запущенными там приложениями.
решение2
X очень отличается от Java. Это не виртуальная машина, уровень абстракции оборудования или что-то в этом роде – этосетевой протокол, в настоящее время в версии X11, которую программы используют для связи с сервером X11. Такие программы могут быть написаны практически на любом языке, если только он имеет необходимые функции.
TheX11 серверобычно запускается на вашей собственной машине и выполняет работу по отображению графики на экране и отправке событий клавиатуры и мыши обратно в программы. Программы (клиенты X11) подключаются к нему локально, используя такие методы IPC (сокеты Unix), или по сети – используя прямой TCP/IP (редко) или туннелируемый внутри соединения SSH (опция «переадресация X11» в PuTTY).
Отражение Xэто коммерческий сервер X11 для Windows. Альтернативы с открытым исходным кодом включаютCygwin/X(порт Xorg), а такжеСинмин. Почти каждый ПК с Linux или BSD работаетXorgв качестве основной графической системы.
Когда вы запускаете Reflection X на своем компьютере, он просто сидит там и ждет подключений. Когда вы запускаете jvisualvm
машину CentOS, профилировщик подключается к серверу X11 (туннелируется через то же самое SSH-соединение, которое использует PuTTY) и использует протокол X11, чтобы открыть окно и рисовать внутри него.
решение3
- Reflection X, похоже, является X-Server, работающим под управлением MS Windows. Бесплатная альтернатива —Синмин
- X-серверы обслуживают клиентские запросы графического интерфейса и отображают их на хост-машине, на которой запущен X-сервер.
- На вашем Linux-компьютере вам нужно будет настроить DISPLAY так, чтобы он указывал на ваш X-сервер, как только он будет запущен и запущен на вашей машине Windows. Затем вы можете запустить приложение GUI из вашего Linux-сервера, и оно отобразится на вашем рабочем столе Windows.
Изящно, да?
В качестве альтернативы, если Linux-компьютер представляет собой виртуальную машину VMware, вы можете установить инструменты VMware и использовать их приложение Unity, чтобы сделать что-то подобное.