কাজ করার জন্য কি কোনও দূরবর্তী জেএমএক্স জে কনসোলকে পেয়েছে?


120

দেখে মনে হয় অতীতে কাজ করার মতো আর কখনও পাইনি। বর্তমানে, আমি জানি এটি কাজ করে না।

তবে আমরা আমাদের জাভা প্রক্রিয়াটি শুরু করি:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6002
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

আমি বন্দরে টেলনেট করতে পারি, এবং "সেখানে কিছু আছে" (এটি যদি আমি প্রক্রিয়াটি শুরু না করি তবে কিছুই উত্তর দেয় না তবে আমি যদি করি তবে তা করে) তবে আমি জে কনসোলকে আইপি পূরণের কাজ করতে পারি না এবং বন্দর

দেখে মনে হচ্ছে এটি এত সহজ হওয়া উচিত, তবে কোনও ত্রুটি নেই, কোনও আওয়াজ নেই, কিছুই নেই। শুধু কাজ করে না।

কেউ কি এর জন্য হট টিপস জানেন?


3
আপনি যদি টমকাট ব্যবহার করছেন তবে এটির সমাধান হতে পারে: স্ট্যাকওভারফ্লো
হাজো থেলেন

5
আপনি কি এখানে কিছু ভুলে যাবেন?
গ্রে

উত্তর:


126

এর জন্য আমার একটি সমাধান রয়েছে:

যদি আপনার জাভা প্রক্রিয়াটি ফায়ারওয়ালের পিছনে লিনাক্সে চলমান থাকে এবং আপনি আপনার জাভা প্রক্রিয়াটির জেএমএক্স পোর্টের সাথে সংযোগ স্থাপনের জন্য আপনার স্থানীয় মেশিনে উইন্ডোজে জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন নিয়ন্ত্রণ শুরু করতে চান ।

আপনার এসএসএইচ লগইনের মাধ্যমে আপনার লিনাক্স মেশিনে অ্যাক্সেস দরকার। সমস্ত যোগাযোগ এসএসএইচ সংযোগের মাধ্যমে সুর করা হবে।

টিপ: ফায়ারওয়াল থাকুক বা না থাকুক এই সমাধানটি কার্যকর হয় না।

অসুবিধা: যতবার আপনি নিজের জাভা প্রক্রিয়া পুনরায় চালু করবেন, আপনাকে আবার 4 - 9 থেকে সমস্ত পদক্ষেপগুলি করতে হবে।


1. আপনার উইন্ডোজ মেশিনের জন্য পুটি-স্যুটটি এখান থেকে আপনার প্রয়োজন:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

কমপক্ষে putty.exe


২. আপনার লিনাক্স মেশিনে একটি মুক্ত পোর্ট নির্ধারণ করুন:

<jmx-remote-port>

উদাহরণ:

jmx-remote-port = 15666      


৩. লিনাক্স মেশিনে জাভা প্রক্রিয়াতে যুক্তি যুক্ত করুন

এটি অবশ্যই ঠিক এভাবে করা উচিত। যদি এটি নীচের মতো হয়ে থাকে তবে এটি ফায়ারওয়ালের পিছনে লিনাক্স মেশিনগুলির জন্য কাজ করে (এটি -Djava.rmi.server.hostname=localhostতর্কের কারণ হিসাবে কাজ করে )।

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<jmx-remote-port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost

উদাহরণ:

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=15666 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=localhost ch.sushicutta.jmxremote.Main


৪. আপনার জাভা প্রক্রিয়াটির প্রসেস-আইডি পান

ps -ef | grep <java-processname>

result ---> <process-id>

উদাহরণ:

ps -ef | grep ch.sushicutta.jmxremote.Main

result ---> 24321


৫. আরএমআইএসভারের স্টাব ডাউনলোডের জন্য নির্বিচারে পোর্টটি সন্ধান করুন

জাভা প্রক্রিয়াটি লিনাক্স মেশিনে একটি নতুন টিসিপি পোর্ট খুলবে, যেখানে আরএমআই সার্ভার-স্টাবগুলি ডাউনলোডের জন্য উপলব্ধ থাকবে। জাভা ভার্চুয়াল মেশিনের সাথে সংযোগ পেতে এই বন্দরটি এসএসএইচ টানেলের মাধ্যমেও পাওয়া দরকার।

netstat -lpএই বন্দরটির সাথে lsof -iজাভা প্রক্রিয়াটি তৈরি করে কী বন্দরটি খোলা হয়েছে তার ইঙ্গিত দেয়।

দ্রষ্টব্য: জাভা প্রক্রিয়া শুরু হওয়ার সাথে সাথে এই বন্দরটি সর্বদা পরিবর্তিত হয়।

netstat -lp | grep <process-id>

tcp        0      0 *:<jmx-remote-port>     *:*     LISTEN      24321/java
tcp        0      0 *:<rmi-server-port>     *:*     LISTEN      24321/java


result ---> <rmi-server-port>

উদাহরণ:

netstat -lp | grep 24321

tcp        0      0 *:15666     *:*     LISTEN      24321/java
tcp        0      0 *:37123     *:*     LISTEN      24321/java


result ---> 37123


6. পুট্টি দিয়ে আপনার উইন্ডোজ মেশিন থেকে দুটি এসএসএইচ-টানেল সক্ষম করুন

Source port: <jmx-remote-port>
Destination: localhost:<jmx-remote-port>
[x] Local       
[x] Auto       

Source port: <rmi-server-port>
Destination: localhost:<rmi-server-port>
[x] Local       
[x] Auto

উদাহরণ:

Source port: 15666
Destination: localhost:15666
[x] Local       
[x] Auto       

Source port: 37123
Destination: localhost:37123
[x] Local       
[x] Auto


পুট্টির মাধ্যমে কোনও এসএসএল টানেল খুলতে সেটিংস


Put. এই এসএসএইচ-টানেল সক্ষম করে পুট্টির সাথে আপনার লিনাক্স মেশিনে লগইন করুন।

পুটি সেশনটি খোলা রাখুন।

আপনি লগ ইন করার পরে, পুট্টি এসএসএইচ পোর্ট 22 এর মাধ্যমে লিনাক্স মেশিনে সমস্ত টিসিপি-সংযোগগুলি সুড়ঙ্গ করবে।

JMX-পোর্ট:

Windows machine: localhost:15666   >>> SSH >>>   linux machine: localhost:15666

RMIServer-অসম্পূর্ণ-পোর্ট:

Windows Machine: localhost:37123   >>> SSH >>>   linux machine: localhost:37123


8. নীচের ইউআরএলটি ব্যবহার করে আপনার জাভা প্রসেসের সাথে সংযোগ করতে জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন নিয়ন্ত্রণ শুরু করুন

এটি কাজ করে, কারণ জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন কন্ট্রোল মনে করে যে আপনি আপনার স্থানীয় উইন্ডোজ মেশিনের কোনও পোর্টের সাথে সংযুক্ত আছেন। তবে পুট্টি আপনার লিনাক্স মেশিনে 15666 বন্দরে সমস্ত পেডলোড প্রেরণ করুন।

লিনাক্স মেশিনে প্রথমে জাভা প্রক্রিয়া উত্তর দেয় এবং আরএমআইএসবার পোর্টটি ফেরত প্রেরণ করে। এই উদাহরণে 37123।

তারপরে জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন কন্ট্রোল মনে করে যে এটি লোকালহোস্টের সাথে সংযুক্ত: 37123 এবং পুটি পুরো পেলোডটি লিনাক্স মেশিনে এগিয়ে পাঠিয়ে দেবে

জাভা প্রক্রিয়া উত্তর দেয় এবং সংযোগটি উন্মুক্ত।

[x] Remote Process:
service:jmx:rmi:///jndi/rmi://localhost:<jndi-remote-port>/jmxrmi

উদাহরণ:

[x] Remote Process:
service:jmx:rmi:///jndi/rmi://localhost:15666/jmxrmi


জেএমএক্স পরিষেবা url এর মাধ্যমে সংযুক্ত করুন Connect


9. উপভোগ করুন # 8-]


1
এখানে কেবল একটি সামান্য প্রশ্ন - আরএমআই ছাড়া কোনও জেএমএক্স সংযোগ করা সম্ভব নয়?
কুমার বৈভব

5
আমি একটি ইঙ্গিত পেয়েছি, যে আমরা একটি নির্দিষ্ট পোর্ট নম্বরে একটি rmi.port সেট করতে পারি, তাই আমরা আরএমআইএসবার স্টাবগুলি ডাউনলোডের জন্য নির্বিচারে পোর্টটি সেট করতে পারি। এটি জাভা সম্পত্তি "com.sun.management.jmxremote.rmi.port = <rmi-server-port>" এর সাথে কাজ করা উচিত। এটি ওরাকল জাভা ভিএম-তে একটি অনিবন্ধিত বৈশিষ্ট্যের মতো দেখায়।
সুশীকত্ত

1
কীস্টোর এবং
বিশ্বস্তের

একই প্রক্রিয়া, তবে আমি টেবিলে এরকম কোনও বস্তু পাইনি
ওয়েস্টার

2
@ সুশিকুত্তা আপনি নিজের উত্তরে এই ইঙ্গিতটি যুক্ত করতে পারেন, এটি পুরোপুরি ঠিকঠাক, এবং 4 থেকে 6 টি পদক্ষেপগুলি সরিয়ে ফেলতে পারে, ধরাটি হ'ল আপনার ফরোয়ার্ড বন্দরটি মূল বন্দরটির মতো হতে হবে এবং জেএমএক্স এবং আরএমআই পোর্ট উভয়ই করতে হবে একই হতে
হীন

80

যুক্ত -Djava.rmi.server.hostname='<host ip>'করা আমার জন্য এই সমস্যার সমাধান করেছে।


2
আমার ক্ষেত্রে আমাকে আইপি ঠিকানা যুক্ত করতে হবে (-jj.rmi.server.hostname = <ip>)। হোস্ট-নেম আমাকে দুটি আইপি অ্যাড্রেস দিয়েছে এবং সঠিক তালিকায় দ্বিতীয়টি ছিল।
জর্জি বলিবা

4
আমার জন্য সমস্যাটি সমাধান করেনি। উইন্ডোজ -2-উইন্ডোজ সংযোগ করা আমার পক্ষে সমস্যা নয় তবে আমি যখন ওরেकल জেডি কে 1.6.024 এর সাথে সুসে চলমান একটি জাভা পরিষেবা নিরীক্ষণ করার জন্য উইন্ডোজের একটি জেভিএম জভিসুয়ালভ.সেক্স থেকে সংযোগ করার চেষ্টা করি, এটি সংযোগটি ব্যর্থ করে। এই কারণে আমি মনে করি এই ব্যক্তিদের প্রশ্নটি এখনও উত্তরহীন।
jangofan

এটি আমার জন্য সমস্যাটি সমাধান করেছে। এই প্লাসটি স্বাভাবিক 3 (প্রমাণীকরণ / পোর্ট / এসএসএল) সেট এবং আমি এখনই দূরবর্তীভাবে সংযোগ করতে পারি। যদিও বাক্সটি একাধিক ভার্চুয়াল ইন্টারফেসে শুনছে, হোস্টটি jvm বিভ্রান্ত করে না কেন তা উল্লেখ করা হতে পারে।
নিকোলি

অবশেষে আমার ওএসএক্স ল্যাপটপে জকনসোলকে সংযুক্ত করার জন্য আমার সমস্যাগুলি সমাধান করুন। ধন্যবাদ।
rado

আমার জন্য কাজ করেছেন। ধন্যবাদ!
জেফ

58

জাভা 8 এবং আরও নতুন সংস্করণ দিয়ে চেষ্টা করা হয়েছে

এই সমাধানটি ফায়ারওয়ালগুলির সাথেও ভাল কাজ করে

1. এটি আপনার জাভা স্টার্টআপ স্ক্রিপ্টে রিমোট-হোস্টে যুক্ত করুন:

-Dcom.sun.management.jmxremote.port=1616
-Dcom.sun.management.jmxremote.rmi.port=1616
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost

২. এটি আপনার কম্পিউটারে চালিত করুন।

  • উইন্ডোজ ব্যবহারকারী :

    putty.exe -ssh user@remote-host -L 1616:remote-host:1616

  • লিনাক্স এবং ম্যাক ব্যবহারকারী :

    ssh user@remote-host -L 1616:remote-host:1616

৩. jconsoleআপনার কম্পিউটারে শুরু করুন

jconsole localhost:1616

4. মজা আছে!

PS: পদক্ষেপ 2 চলাকালীন, ব্যবহার করার সময় sshএবং -Lআপনি উল্লেখ করেছেন যে স্থানীয় (ক্লায়েন্ট) হোস্টের পোর্ট 1616 অবশ্যই দূরবর্তী দিকে ফরোয়ার্ড করা উচিত। এটি একটি এসএসএস টানেল এবং ফায়ারওয়াল বা বিভিন্ন নেটওয়ার্কের সমস্যা এড়াতে সহায়তা করে।


1
অসাধারণ!! জাভা 8-তে একটি অ্যাক্টিভ্যমকিউ ইনস্ট্যান্সে জেএমএক্স-রিমোট করতে এখন 6 + ঘন্টা চেষ্টা করা হয়েছে। শেষ যে কিছু কাজ করেছে !! ধন্যবাদ! :)
রুপ করুন

ধন্যবাদ, আপনার মতো আমিও প্রায় একদিনের জন্য লড়াই করেছি, এবং অনেক কাজ করার পরে আমি কেবল ভেবেছিলাম: "আমাকে অবশ্যই এই জিনিসটি লিখতে হবে !!"
18

2
সত্যই স্তন্যপান করে যে ওরাকল "com.sun.management.jmxremote.rmi.port", "java.rmi.server.hostname" ডকসস.ওরকল / জাভাসে / ৮ / ডকস / টেকনোটস / গাইডস / ম্যানেজমেন্ট / আমি উল্লেখ করে না অনুমান যে আমার সমস্যা ছিল।
রোপ করুন

কারণ, আফাইক, এই সমস্যাটি জেএমএক্স সম্পর্কিত নয়, তবে আরএমআই কীভাবে কাজ করে। উদাহরণস্বরূপ, এই মামলার পরে, আমার জিমিটারের সাথে একই সমস্যা ছিল, যা তার ক্লায়েন্ট / সার্ভার বাস্তবায়নে আরএমআই ব্যবহার করে।
ফ্রিদেব

2
এটা কাজ করে। শুধু সুরগুলির সাথে আমার অভিজ্ঞতা যুক্ত করে: 1) "-L 1616: লোকালহোস্ট: 1616" 2) "লোকালহোস্ট" ব্যবহার করতে পারে) উত্স বন্দরটি পরিবর্তন করতে পারে না, এটি কাজ করবে না: "-L 9999: লোকালহোস্ট: 1616"
গারগেই

19

আপনি সম্ভবত কোনও ফায়ারওয়াল নিয়ে সমস্যা ভোগ করছেন। 'সমস্যা' হ'ল আপনি যে পোর্টটি নির্দিষ্ট করেছেন তা কেবলমাত্র ব্যবহৃত বন্দর নয়, এটি আরএমআইয়ের জন্য 1 বা আরও 2 টি বন্দর ব্যবহার করে এবং সেগুলি সম্ভবত ফায়ারওয়াল দ্বারা অবরুদ্ধ।

যদি আপনি ডিফল্ট আরএমআই কনফিগারেশন ব্যবহার করেন তবে অতিরিক্ত পোর্টগুলির মধ্যে একটি জেনে রাখা হবে না, সুতরাং আপনাকে একটি বৃহত পরিসরের বন্দর খুলতে হবে - যা সার্ভার প্রশাসককে আনন্দিত করতে পারে না।

একটি সমাধান রয়েছে যার জন্য অনেকগুলি বন্দর খোলার প্রয়োজন নেই, আমি সম্মিলিত উত্স স্নিপেট এবং এর টিপস ব্যবহার করে কাজ করতে পেরেছি

http://forums.sun.com/thread.jspa?threadID=5267091 - লিঙ্কটি আর কাজ করে না

http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx

http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html

এমনকি এটি একটি এসএসএস টানেল সেটআপ করা এবং এটি এখনও কাজ করতে পাওয়া সম্ভব :-)


2
আমি অন্য একটি উত্তরে উল্লিখিত হিসাবে -jj.somi- server.hostname- এর পাশাপাশি justgenius.com/2010/08/jconsole-via-socks-ssh-tunnel.html বর্ণিত কেবলমাত্র উপনাম ব্যবহার করে ফায়ারওয়ালের আশেপাশে কাজ করতে সক্ষম হয়েছি।
ড্যামিয়েন

ভবিষ্যতের পাঠকদের জন্য নোট: লিঙ্ক forums.sun.comনষ্ট হয়ে গেছে
CDspace

1
ভবিষ্যতের পাঠকদের জন্য নোট: লিঙ্কটি নষ্ট হয়েছে blogs.oracle.com
গ্রিমলক

17

গত কয়েকদিন ধরে আমার গুগল-ফুকে পরীক্ষায় রাখার পরে, স্ট্যাক ওভারফ্লো এবং এই পৃষ্ঠা থেকে উত্তর সংকলন করার পরে অবশেষে আমি এটি কাজ করতে সক্ষম হয়েছি http://help.boomi.com/atomsphere/GUID-F787998C- 53C8-4662-AA06-8B1D32F9D55B.html

ডেল বুমি পৃষ্ঠা থেকে পুনরায় পোস্ট করা:

To Enable Remote JMX on an Atom

If you want to monitor the status of an Atom, you need to turn on Remote JMX (Java Management Extensions) for the Atom.

Use a text editor to open the <atom_installation_directory>\bin\atom.vmoptions file.

Add the following lines to the file:

-Dcom.sun.management.jmxremote.port=5002
-Dcom.sun.management.jmxremote.rmi.port=5002
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

আমি কোনও স্ট্যাক ওভারফ্লো উত্তর কভারটি দেখিনি

-Dcom.sun.management.jmxremote.rmi.port=5002

আমার ক্ষেত্রে, আমি কাকফা মেট্রিক্স পুনরুদ্ধার করার চেষ্টা করছিলাম, তাই আমি মানটির সাথে মিলিয়ে দিতে কেবল উপরের বিকল্পটি পরিবর্তন করেছি -Dcom.sun.management.jmxremote.port। সুতরাং, কোনও প্রকারের প্রমাণীকরণ ব্যতীত, বেয়ার ন্যূনতম কনফিগারেশনটি দেখতে এমন হওয়া উচিত:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=(jmx remote port)

-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.rmi.port=(jmx remote port)
-Djava.rmi.server.hostname=(CNAME|IP Address)

1
"গুগল-ফু" এর জন্য প্লাস ওয়ান
কেভিনার্পে

"com.sun.management.jmxremote.rmi.port" আমার জন্যও মূল বিষয় ছিল। এই উত্তরটিও
ডেভিড

আমার "com.sun.management.jmxremote.local.only" দরকার নেই তাই আপনার কনফিগারেশনটি সত্যই "বেয়ার ন্যূনতম" বলে মনে করি না
ডেভিড


7

নীচের লাইনটি ধাপ 3-এ যুক্ত করে সুশীকতার পদক্ষেপ 4-7 এড়িয়ে যেতে পারে:

-Dcom.sun.management.jmxremote.rmi.port=<same port as jmx-remote-port>

যেমন পরামিতিগুলি শুরু করতে যুক্ত করুন:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.rmi.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost

পোর্ট ফরওয়ার্ডিংয়ের জন্য, এটি ব্যবহার করে সংযুক্ত করুন:

ssh -L 12345:localhost:12345 <username>@<host>

যদি আপনার হোস্ট একটি পদক্ষেপ পাথর হয় তবে উপরের পরে স্টেপ পাথরটিতে নিম্নলিখিতটি চালিয়ে পোর্টটি সামনের দিকে চেইন করুন:

ssh -L 12345:localhost:12345 <username>@<host2>

মনে রাখবেন যে জেএমএক্স্রমেটটি টানেলটি ব্যবহার করতে rmi সংযোগটি বলছে তা নিশ্চিত করার জন্য হোস্টনাম = লোকালহোস্টের প্রয়োজন। অন্যথায় এটি সরাসরি সংযোগ করার চেষ্টা করতে পারে এবং ফায়ারওয়ালটিকে আঘাত করতে পারে।


এই পদ্ধতিটি আমাকে সহায়তা করে: (1) আমি মিস করা জেএমএক্স প্যারামিটারগুলি যুক্ত করেছি এবং অ্যাপ্লিকেশনটি পুনরায় চালু করব (2) তারপরে ssh -L <JMX_port>:localhost:<JMX_port> <remote_user>@<remote_host> লোকাল মেশিনে jconsole <remote_host>:<JMX_port>
চালাও

6

PROTIP:

আরএমআই বন্দরটি নির্বিচারে পোর্টনারে খোলা হয়। আপনার যদি ফায়ারওয়াল থাকে এবং 1024-65535 (অথবা ভিপিএন ব্যবহার করুন) পোর্টগুলি খুলতে না চান তবে আপনাকে নিম্নলিখিতগুলি করতে হবে।

আপনাকে আরএমআই রেজিস্ট্রি এবং জেএমএক্স / আরএমআই সার্ভার পোর্টগুলি ঠিক করতে হবে (একটি পরিচিত নম্বর থাকার মতো)। আপনি লিবা-ডিরে একটি জার-ফাইল (ক্যাটালিনা-জেএমএক্স-রিমোট.জার এটি অতিরিক্ত ক্ষেত্রে) রেখে সার্ভারের অধীনে একটি বিশেষ শ্রোতা কনফিগার করে এটি করেন:

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
      rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

(এবং অবশ্যই জেএমএক্স সক্রিয় করার জন্য স্বাভাবিক পতাকা অবশ্যই

    -Dcom.sun.management.jmxremote  \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Djava.rmi.server.hostname=<HOSTNAME> \

দেখুন: জেএমএক্স রিমোট লাইফসাইকেল শ্রোতা http://tomcat.apache.org/tomcat-6.0-doc/config/listeners.html এ

তারপরে আপনি এই ভয়াবহ URL টি ব্যবহার করে সংযোগ করতে পারেন:

service:jmx:rmi://<hostname>:10002/jndi/rmi://<hostname>:10001/jmxrmi

উপরের ডাব্লু / এক্সট্রা জারের চেষ্টা করে দেখতে পেয়েছেন এবং আরএমআই বন্দরগুলি নির্দিষ্ট হিসাবে শোনা দেখতে পাচ্ছেন, তবে ভিজুয়ালভিএমের সাথে জেভিএম পোর্টের সাথে সংযোগ স্থাপনের পরে আরএমআই দ্বারা র্যান্ডম বন্দরগুলি এখনও ব্যবহৃত হচ্ছে। কার্যকরী: 'lsof -i' সমেত পোর্টগুলির জন্য নজর রাখুন এবং অবরুদ্ধ সংযোগযুক্তগুলি খুলুন।
জোসেফ লাস্ট

5

আপনার সার্ভার ফায়ারওয়ালের পিছনে রয়েছে কিনা তা পরীক্ষা করুন। জেএমএক্স আরএমআই ভিত্তিক, এটি যখন শুরু হয় তখন দুটি বন্দর খোলে। একটি রেজিস্টার পোর্ট, ডিফল্ট 1099, এবং com.sun.management.jmxremote.portবিকল্প দ্বারা নির্দিষ্ট করা যেতে পারে । অন্যটি ডেটা যোগাযোগের জন্য, এবং এলোমেলো, যা সমস্যার কারণ। একটি ভাল খবর হ'ল, জেডিকে 6 থেকে, এই র্যান্ডম পোর্টটি com.sun.management.jmxremote.rmi.portবিকল্প দ্বারা নির্দিষ্ট করা যেতে পারে ।

export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8991 -Dcom.sun.management.jmxremote.rmi.port=8991 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

4

ফায়ারওয়ালের মাধ্যমে জেএমএক্স পাওয়া সত্যিই শক্ত। সমস্যাটি হ'ল মানক আরএমআই দ্বিতীয় র্যান্ডম নির্ধারিত পোর্ট ব্যবহার করে (আরএমআই রেজিস্ট্রিের পাশে)।

আমাদের তিনটি সমাধান রয়েছে যা কাজ করে তবে প্রতিটি ক্ষেত্রে আলাদা আলাদা প্রয়োজন:

  1. মোজা প্রক্সি সহ এসএসএইচ টানেলের উপর জেএমএক্স, এসএসএইচ ম্যাজিকের সাথে স্ট্যান্ডার্ড আরএমআই ব্যবহার করে http://simplygenius.com/2010/08/jconsole-via-socks-ssh-tunnel.html

  2. জেএমএক্স এমপি (স্ট্যান্ডার্ড আরএমআইয়ের বিকল্প), কেবল একটি স্থির বন্দর ব্যবহার করে তবে সার্ভার এবং ক্লায়েন্টের একটি বিশেষ জার দরকার http://meteatamel.wordpress.com/2012/02/13/jmx-rmi-vs-jmxmp/

  3. জেএমএক্স সার্ভারের ফর্ম কোডটি শুরু করুন, সেখানে স্ট্যান্ডার্ড আরএমআই ব্যবহার করা এবং একটি নির্দিষ্ট দ্বিতীয় বন্দর ব্যবহার করা সম্ভব: https://issues.apache.org/bugzilla/show_bug.cgi?id=39055


অন্য সমস্ত উত্তর এই এক যোগ করা উচিত
ruruskyi

2

দূরবর্তী জেএমএক্স সমস্যাগুলি পরীক্ষা / ডিবাগিং / নির্ণয়ের সময় , সর্বদা সর্বদা একই হোস্টের সাথে এমবিএন সার্ভার (অর্থাৎ লোকালহোস্ট) যুক্ত এবং নেটওয়ার্ক এবং অন্যান্য জেএমএক্স নির্দিষ্ট সমস্যাগুলি বাতিল করার চেষ্টা করুন।


2

এখানে ইতিমধ্যে কিছু দুর্দান্ত উত্তর রয়েছে, তবে, একটি সামান্য সরল পদ্ধতির রয়েছে যা আমি মনে করি এটি ভাগ করে নেওয়া ভাল।

সুশিকত্তার পদ্ধতিটি ভাল, তবে আপনাকে প্রতিবার আরএমআই বন্দর পেতে হবে বলে এটি খুব ম্যানুয়াল। ধন্যবাদ, আমরা স্পষ্টভাবে পোর্ট টানেলগুলি না খোলার চেয়ে SOCKS প্রক্সি ব্যবহার করে এটিকে ঘিরে কাজ করতে পারি। এই পদ্ধতির খারাপ দিকটি হ'ল আপনার মেশিনে চালিত জেএমএক্স অ্যাপ্লিকেশনটি প্রক্সি ব্যবহারের জন্য কনফিগার করতে সক্ষম হওয়া দরকার। বেশিরভাগ প্রক্রিয়াগুলি আপনি জাভা বৈশিষ্ট্য যুক্ত করে এটি করতে পারেন তবে কিছু অ্যাপ্লিকেশন এটি সমর্থন করে না।

পদক্ষেপ:

  1. আপনার দূরবর্তী জাভা পরিষেবার জন্য স্টার্টআপ স্ক্রিপ্টে জেএমএক্স বিকল্পগুলি যুক্ত করুন:

    -Dcom.sun.management.jmxremote=true
    -Dcom.sun.management.jmxremote.port=8090
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false
    
  2. আপনার দূরবর্তী মেশিনে একটি SOCKS প্রক্সি সংযোগ স্থাপন করুন:

    ssh -D 9696 user@remotemachine.com
    
  3. SOCKS প্রক্সি ব্যবহারের জন্য আপনার স্থানীয় জাভা পর্যবেক্ষণ অ্যাপ্লিকেশনটি কনফিগার করুন (লোকালহোস্ট: 9696)। দ্রষ্টব্য: আপনি কখনও কখনও কমান্ড লাইন থেকে এটি করতে পারেন , যেমন:

    jconsole -J-DsocksProxyHost=localhost -J-DsocksProxyPort=9696
    

2

নিম্নলিখিতগুলি আমার পক্ষে কাজ করেছে (যদিও আমি মনে করি পোর্ট 2101 আসলে এতে অবদান রাখেনি):

-Dcom.sun.management.jmxremote.port=2100
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.rmi.port=2101
-Djava.rmi.server.hostname=<IP_ADDRESS>OR<HOSTNAME>

আমি একটি রিমোট মেশিন থেকে একটি সার্ভারের সাথে সংযোগ করছি যাটিতে ডকার চলছে এবং প্রক্রিয়াটি ধারকটির ভিতরে রয়েছে। এছাড়াও, আমি ফায়ারওয়ালডি বন্ধ করে দিয়েছি তবে আমি মনে করি না যে এটিই সমস্যা ছিল কারণ আমি ফায়ারওয়াল খোলার পরেও 2100 তে টেলনেট করতে পারি। আশা করি এটা সাহায্য করবে.


1

আমি লিনাক্স রেডহাট ইএস 3 চালিয়ে উইন্ডোতে জোকনসোল / জেভিসুয়ালভিএম চালনা করছি।

নিম্নলিখিত কমান্ডটি ব্যবহার করে প্যাকেট ফিল্টারিং অক্ষম করা আমার জন্য কৌশলটি করেছে:

/usr/sbin/iptables -I INPUT -s jconsole-host -p tcp --destination-port jmxremote-port -j ACCEPT

যেখানে jconsole- হোস্ট হয় হোস্টের নাম বা হোস্ট ঠিকানা যার উপর JConsole চালু আছে এবং jmxremote-Port হয় দূরবর্তী পরিচালনার জন্য com.sun.management.jmxremote.port এর জন্য পোর্ট নম্বর সেট।


2
সুস আমাজন ইসি 2 উদাহরণে আমার পক্ষে কাজ করেনি। আমি মনে করি সমস্যাটি সর্বত্রই রয়েছে।
jangofan

1

আমি ভিতরে টমক্যাট দিয়ে ডকারের পাত্রে চালনার জন্য বুট 2 ডকার ব্যবহার করছি এবং আমারও একই সমস্যা হয়েছে, সমাধানটি ছিল:

  • যোগ -Djava.rmi.server.hostname=192.168.59.103
  • হোস্ট এবং Docker কন্টেইনারে একই JMX বন্দর ব্যবহার করুন, উদাহরণস্বরূপ: docker run ... -p 9999:9999 ...। বিভিন্ন বন্দর ব্যবহার করে কাজ হয় না।

0

আপনাকে এটিও নিশ্চিত করতে হবে যে আপনার মেশিনের নাম যে আইপি জেএমএক্সের কাছে বাধ্যতামূলক তা আইপি-র সাথে সমাধান হয়েছে; লোকালহোস্ট বা 127.0.0.1 নয়। আমার জন্য, এটি হোস্টগুলিতে একটি এন্ট্রি রাখতে সহায়তা করেছে যা স্পষ্টভাবে এটি সংজ্ঞায়িত করে।


0

ফায়ারওয়ালের মাধ্যমে জেএমএক্স পাওয়া মোটেই তেমন শক্ত নয়। একটি ছোট ক্যাচ আছে। আপনাকে আপনার জেএমএক্স কনফিগার করা পোর্ট উভয়ই ফরোয়ার্ড করতে হবে। 9010 এবং গতিশীল পোর্টগুলির মধ্যে একটি এটি আমার মেশিনে শোনে> এটি 30000 was


0

এই পদক্ষেপগুলি যা আমার জন্য কাজ করেছে (সার্ভার সাইডে ফায়ারওয়ালের পিছনে ডেবিয়ান, আমার স্থানীয় ম্যাক থেকে ভিপিএন এর উপরে পৌঁছেছে):

সার্ভার আইপি চেক করুন

hostname -i

জেভিএম প্যারাম ব্যবহার করুন:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=[jmx port]
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=[server ip from step 1]

অ্যাপ্লিকেশন চালান

চলমান জাভা প্রক্রিয়াটির পডটি সন্ধান করুন

জেএমএক্স / আরএমআই দ্বারা ব্যবহৃত সমস্ত বন্দর পরীক্ষা করুন

netstat -lp | grep [pid from step 4]

ফায়ারওয়ালে পঞ্চম ধাপ থেকে সমস্ত পোর্ট খুলুন

Voila।


0

অবদান রাখার জন্য, টমক্যাট 6 এর জন্য আমি সেন্টোস 6.4 এ করেছি।

  1. শাটডাউন iptables পরিষেবা

    service iptables stop
    
  2. Tomcat6.conf এ নিম্নলিখিত লাইনটি যুক্ত করুন

    CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8085 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=[host_ip]"
    

এইভাবে আমি জে কনসোল ব্যবহার করে অন্য একটি পিসি থেকে সংযোগ করতে সক্ষম হয়েছি।


0

আমি জেএমসিকে চেষ্টা করছি যে রিমোট সার্ভারে নিফিকে প্রোফাইল করতে ফ্লাইট রেকর্ডার (জেএফআর) চালানোর জন্য যা জেএমসি চালাতে কোনও গ্রাফিকাল পরিবেশ দেয় না।

এখানে প্রদত্ত অন্যান্য উত্তরের উপর ভিত্তি করে, এবং অনেক পরীক্ষার এবং ত্রুটির উপর ভিত্তি করে, আমি যখন নীফাই চালু করি তখন আমি জেভিএম ( কনফার্ট / বুটস্ট্র্যাপকনফ ) সরবরাহ করছি :

java.arg.90=-Dcom.sun.management.jmxremote=true
java.arg.91=-Dcom.sun.management.jmxremote.port=9098
java.arg.92=-Dcom.sun.management.jmxremote.rmi.port=9098
java.arg.93=-Dcom.sun.management.jmxremote.authenticate=false
java.arg.94=-Dcom.sun.management.jmxremote.ssl=false
java.arg.95=-Dcom.sun.management.jmxremote.local.only=false
java.arg.96=-Djava.rmi.server.hostname=10.10.10.92  (the IP address of my server running NiFi)

আমি এটিকে / ইত্যাদি / হোস্টগুলিতে রেখেছি, যদিও আমার সন্দেহ হয় যে এটি প্রয়োজন:

10.10.10.92   localhost

তারপরে, জেএমসি চালু করার পরে, আমি এই বৈশিষ্ট্যগুলির সাথে একটি দূরবর্তী সংযোগ তৈরি করব:

Host: 10.10.10.92
Port: 9098
User: (nothing)
Password: (ibid)

ঘটনাচক্রে, আমি যদি কাস্টম জেএমএক্স পরিষেবা URL টি ক্লিক করি তবে আমি দেখতে পাচ্ছি:

service:jmx:rmi:///jndi/rmi://10.10.10.92:9098/jmxrmi

এই অবশেষে আমার জন্য এটি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.