JSTATD(1) دستورات JDK JSTATD(1)

jstatd - دیمن نظارت بر ایجاد و خاتمه ماشین‌های مجازی Java HotSpot در OpenJDK 17

نکته: این دستور آزمایشی است و پشتیبانی نمی‌شود.

jstatd [گزینه‌ها]

گزینه‌ها
گزینه‌های خط فرمان jstatd را مشخص می‌کند. بخش گزینه‌های دستور JSTATD را ببینید.

دستور jstatd یک برنامه کارساز RMI است که ایجاد و خاتمه ماشین‌های مجازی Java HotSpot ابزارمندسازی‌شده (instrumented) را نظارت کرده و رابطی برای فعال‌سازی ابزارهای پایش از راه دور، یعنی jstat و jps، فراهم می‌آورد تا به JVMهای در حال اجرا روی میزبان محلی متصل شده و اطلاعات فرایند JVM را گردآوری کنند.

کارساز jstatd نیازمند یک رجیستری RMI روی میزبان محلی است. کارساز jstatd تلاش می‌کند به رجیستری RMI روی درگاه پیش‌فرض یا روی درگاهی که با گزینه -p port مشخص شده متصل شود. اگر رجیستری RMI یافت نشود، یک رجیستری درون برنامه jstatd ایجاد می‌شود که به درگاه مشخص‌شده با گزینه -p port یا درگاه پیش‌فرض رجیستری RMI (در صورت حذف گزینه -p port) متصل می‌گردد. با مشخص کردن گزینه -nr می‌توانید از ایجاد رجیستری داخلی RMI جلوگیری کنید.

این گزینه در صورت پیدا نشدن رجیستری RMI موجود، از تلاش برای ایجاد رجیستری داخلی RMI در فرایند jstatd جلوگیری می‌کند.
این گزینه شماره درگاهی را تنظیم می‌کند که انتظار می‌رود رجیستری RMI روی آن یافت شود، یا در صورت پیدا نشدن (چنانچه گزینه -nr مشخص نشده باشد) روی آن ایجاد گردد.
این گزینه شماره درگاهی را تعیین می‌کند که رابط RMI به آن متصل می‌شود. در صورت عدم تعیین، از یک درگاه آزاد تصادفی استفاده می‌شود.
این گزینه نامی را تعیین می‌کند که شیء راه دور RMI در رجیستری RMI با آن مقید (bound) می‌شود. نام پیش‌فرض JStatRemoteHost است. اگر چندین کارساز jstatd روی یک میزبان راه‌اندازی شوند، نام شیء RMI ارائه‌شده برای هر کارساز را می‌توان با تعیین این گزینه یکتا ساخت. با این حال، انجام این کار مستلزم آن است که نام یکتای کارساز در رشته‌های hostid و vmid کلاینت پایش گنجانده شود.
این گزینه یک گزینه جاوا (option) را به JVM ارسال می‌کند؛ گزینه‌ای که یکی از موارد شرح داده‌شده در صفحه راهنمای راه‌انداز برنامه جاوا است. برای نمونه، -J-Xms48m مقدار حافظه هنگام راه‌اندازی را روی ۴۸ مگابایت تنظیم می‌کند. java را ببینید.

کارساز jstatd تنها می‌تواند JVMهایی را پایش کند که دسترسی‌های محلی مناسب برای آن‌ها را داشته باشد. بنابراین، فرایند jstatd باید با همان اعتبارنامه کاربری JVMهای هدف اجرا شود. برخی اعتبارنامه‌های کاربری، مانند کاربر ریشه (root) در سیستم‌عامل‌های لینوکس و OS X، دسترسی به ابزارمندی‌های ارائه‌شده توسط هر JVM روی سیستم را دارا هستند. فرایند jstatd که با چنین اعتبارنامه‌هایی اجرا شود می‌تواند هر JVM موجود در سیستم را پایش کند، اما نگرانی‌های امنیتی بیشتری به همراه خواهد داشت.

کارساز jstatd هیچ‌گونه اعتبارسنجی و احراز هویتی برای کلاینت‌های راه دور ارائه نمی‌دهد. بنابراین، اجرای فرایند کارساز jstatd موجب می‌شود ابزارمندی ارائه‌شده توسط تمام JVMهایی که فرایند jstatd به آن‌ها دسترسی دارد برای هر کاربری در شبکه فاش شود. این افشاگری ممکن است در محیط کاری شما مطلوب نباشد، بنابراین پیش از اجرای فرایند jstatd، باید سیاست‌های امنیتی محلی مورد بررسی قرار گیرند، به‌ویژه در محیط‌های عملیاتی یا شبکه‌های ناامن.

کارساز jstatd هنگامی که هیچ مدیر امنیتی (security manager) دیگری نصب نشده باشد، یک نمونه از RMISecurityPolicy را نصب می‌کند و بنابراین، نیاز به تعیین یک فایل خط‌مشی امنیتی دارد. فایل خط‌مشی باید با پیاده‌سازی پیش‌فرض خط‌مشی و نحو فایل خط‌مشی مطابقت داشته باشد.

اگر نگرانی‌های امنیتی شما با یک فایل خط‌مشی سفارشی برطرف نمی‌شود، ایمن‌ترین اقدام این است که کارساز jstatd را اجرا نکرده و از ابزارهای jstat و jps به صورت محلی استفاده نمایید. با این وجود، هنگام استفاده از jps برای دریافت فهرست JVMهای ابزارمندسازی‌شده، این فهرست شامل JVMهای در حال اجرا درون کانتینرهای داکر نخواهد بود.

رابط ارائه‌شده توسط فرایند jstatd اختصاصی بوده و تغییر آن در آینده حتمی است. به کاربران و توسعه‌دهندگان توصیه می‌شود از کدنویسی روی این رابط خودداری کنند.

در ادامه مثال‌هایی از دستور jstatd آورده شده است. اسکریپت‌های jstatd به صورت خودکار کارساز را در پس‌زمینه اجرا می‌کنند.

این مثال نحوه اجرای یک نشست jstatd را با یک رجیستری داخلی RMI نشان می‌دهد. این مثال فرض می‌کند هیچ کارساز دیگری به درگاه پیش‌فرض رجیستری RMI (درگاه 1099) متصل نشده است.

jstatd -J-Djava.security.policy=all.policy

این مثال یک نشست jstatd را با یک رجیستری خارجی RMI اجرا می‌کند.


rmiregistry&
jstatd -J-Djava.security.policy=all.policy

این مثال یک نشست jstatd را با یک کارساز رجیستری خارجی RMI روی درگاه 2020 اجرا می‌کند.


jrmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020

این مثال یک نشست jstatd را با یک کارساز رجیستری خارجی RMI روی درگاه 2020 و اتصال‌دهنده JMX متصل به درگاه 2021 اجرا می‌کند.


jrmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -r 2021

این مثال یک نشست jstatd را با یک رجیستری خارجی RMI روی درگاه 2020 که با نام AlternateJstatdServerName متصل شده اجرا می‌کند.


rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName

این مثال یک نشست jstatd را آغاز می‌کند که در صورت پیدا نشدن رجیستری RMI، رجیستری جدیدی ایجاد نمی‌کند. این مثال فرض می‌کند رجیستری RMI از قبل در حال اجرا است. اگر رجیستری RMI در حال اجرا نباشد، یک پیام خطا نمایش داده می‌شود.

jstatd -J-Djava.security.policy=all.policy -nr

این مثال یک نشست jstatd را با فعال بودن قابلیت‌های ثبت وقایع (logging) RMI آغاز می‌کند. این تکنیک برای عیب‌یابی یا پایش فعالیت‌های کارساز سودمند است.

jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true

2021 JDK 17