در دنیای توسعه و مدیریت سرورها، نظارت بر عملکرد سیستم از اهمیت بالایی برخوردار است. تستهای عملکردی به شما امکان میدهند که میزان کارآیی سرور یا ماشین مجازی خود را ارزیابی کرده و بهترین تنظیمات ممکن را پیدا کنید. یکی از ابزارهای ساده و کارآمد برای تست عملکرد سرور، اسکریپتهای Bench.sh است که با استفاده از دو دستور wget
و curl
قابل اجرا هستند.
این مقاله به بررسی اسکریپتهای bash، دستور wget -qO- bench.sh | bash
و دستور curl -Lso- bench.sh | bash
، و شرح عملکرد هر خط این اسکریپتها خواهد پرداخت.
چرا Bench.sh؟
قبل از اینکه به جزئیات اجرای اسکریپت بپردازیم، اجازه دهید به این موضوع بپردازیم که چرا ابزار Bench.sh گزینهای مناسب برای تست عملکرد است.
- سادگی: نیازی به نصب نرمافزارهای پیچیده ندارید؛ تنها با یک خط دستور، میتوانید تست را اجرا کنید.
- سبک و سریع: Bench.sh بسیار سبک بوده و به سرعت اجرا میشود.
- اطلاعات دقیق: Bench.sh اطلاعات کاملی از جمله عملکرد دیسک، شبکه و پردازنده را در اختیار شما قرار میدهد.
تحلیل خط به خط اسکریپت
1. اجرای دستور wget -qO- bench.sh | bash
این دستور شامل دو بخش است:
-
wget -qO- bench.sh
این قسمت اسکریپتbench.sh
را از یک سرور ریموت دانلود میکند.wget
یک ابزار رایگان و قدرتمند برای دانلود فایلها از وب است. پارامتر-q
به معنای اجرای بیصدا (بدون نمایش اطلاعات در ترمینال) و پارامتر-O-
به معنای هدایت خروجی به خروجی استاندارد (stdout) است. -
| bash
این بخش خروجی اسکریپت دانلود شده را به پوسته Bash منتقل میکند. به عبارت دیگر، این قسمت اسکریپت را در محیط bash اجرا میکند.
2. اجرای دستور curl -Lso- bench.sh | bash
این دستور نیز مشابه دستور قبلی عمل میکند، اما با استفاده از ابزار curl به جای wget:
-
curl -Lso- bench.sh
curl
یکی از ابزارهای محبوب برای دانلود دادهها از اینترنت است. پارامتر-L
به معنای دنبال کردن تغییر مسیرها (redirections) است،-s
برای اجرای بیصدا (مانند-q
در wget) و-o-
به معنای هدایت خروجی به خروجی استاندارد است. -
| bash
همانند دستور قبلی، این قسمت خروجی را به محیط Bash منتقل میکند و اجرا میشود.
عملکرد و اجزای Bench.sh
حالا که به نحوه اجرای اسکریپت پرداختیم، نوبت به بررسی دقیقتر خود اسکریپت Bench.sh میرسد. این اسکریپت شامل مراحل زیر است:
1. بررسی سیستم و نصب ابزارهای لازم
در ابتدای اجرای اسکریپت، اطلاعات مربوط به سیستم شامل سیستمعامل، معماری، و اطلاعات پردازنده جمعآوری میشود. سپس اسکریپت بررسی میکند که آیا ابزارهای لازم (مثل wget
یا curl
) در سیستم نصب شدهاند یا خیر. در صورت عدم وجود، اسکریپت تلاش میکند که آنها را نصب کند.
2. تست سرعت پردازنده (CPU Benchmark)
در این مرحله، Bench.sh تستهایی را روی پردازنده اجرا میکند تا سرعت و کارآیی آن را اندازهگیری کند. معمولاً از دستورات لینوکسی مانند sysbench
برای این منظور استفاده میشود. این تستها شامل عملیاتهای محاسباتی پیچیده هستند که میتوانند عملکرد واقعی پردازنده را نشان دهند.
3. تست عملکرد حافظه (Memory Benchmark)
بعد از تست پردازنده، Bench.sh عملکرد حافظه (RAM) را بررسی میکند. با استفاده از عملیاتهای خواندن و نوشتن مکرر، این اسکریپت سرعت دسترسی به حافظه را اندازهگیری میکند.
4. تست عملکرد دیسک (Disk Benchmark)
این بخش، عملکرد دیسک سخت یا SSD را مورد ارزیابی قرار میدهد. با نوشتن و خواندن فایلهای مختلف، سرعت نوشتن و خواندن دیسک محاسبه میشود. ابزارهایی مانند dd
و fio
ممکن است برای این منظور مورد استفاده قرار گیرند.
5. تست شبکه (Network Benchmark)
Bench.sh همچنین تستهایی برای ارزیابی عملکرد شبکه انجام میدهد. این تستها شامل ارسال و دریافت داده از سرورهای مختلف در اینترنت و اندازهگیری سرعت دانلود و آپلود است. این بخش از تست میتواند به شما کمک کند تا متوجه شوید که آیا شبکه سرورتان به درستی کار میکند یا نه.
6. نمایش نتایج
در نهایت، Bench.sh نتایج تستها را به صورت خوانا و ساختاریافته نمایش میدهد. این نتایج شامل موارد زیر است:
- اطلاعات پردازنده (تعداد هستهها، سرعت کلاک، مدل)
- میزان حافظه استفاده شده و موجود
- سرعت خواندن و نوشتن دیسک
- سرعت دانلود و آپلود از سرورهای مختلف
نکات مهم در استفاده از Bench.sh
امنیت
همیشه به یاد داشته باشید که هر بار که یک اسکریپت را از اینترنت دانلود و اجرا میکنید، باید از منبع آن اطمینان داشته باشید. دانلود و اجرای مستقیم اسکریپتها از منابع نامشخص میتواند مخاطرهآمیز باشد. توصیه میشود قبل از اجرای هر اسکریپت، محتوای آن را بررسی کنید.
استفاده بهینه از Bench.sh
Bench.sh برای تستهای سریع و کلی مناسب است، اما برای تستهای دقیقتر و پیشرفتهتر ممکن است نیاز به ابزارهای بیشتری داشته باشید. ابزارهای دیگری مانند Phoronix Test Suite یا iperf ممکن است برای تستهای عملکرد دقیقتر مورد استفاده قرار گیرند.
تفاوت بین wget
و curl
در این بخش به مقایسه دو دستور wget و curl که در ابتدای مقاله معرفی شدند، میپردازیم:
- wget:
- برای دانلود فایلها طراحی شده است.
- میتواند دانلودها را از جایی که قطع شدهاند، ادامه دهد.
- از پروتکلهای HTTP و FTP پشتیبانی میکند.
- curl:
- میتواند برای دانلود یا آپلود داده استفاده شود.
- از پروتکلهای بیشتری پشتیبانی میکند، از جمله HTTP، FTP، SFTP و غیره.
- قابلیتهای بیشتری در ارسال درخواستهای HTTP (مثل POST، PUT و DELETE) دارد.
نتیجهگیری
استفاده از اسکریپتهای ساده مانند Bench.sh یک روش سریع و آسان برای ارزیابی عملکرد کلی سرور یا ماشین مجازی شما است. دو دستور wget -qO- bench.sh | bash
و curl -Lso- bench.sh | bash
هر دو میتوانند به سادگی اجرا شوند و اطلاعات کاملی در مورد عملکرد CPU، حافظه، دیسک و شبکه در اختیار شما قرار دهند. با این حال، همیشه قبل از اجرای اسکریپتها از منبع آنها اطمینان حاصل کنید و در صورت نیاز به تستهای دقیقتر از ابزارهای پیشرفتهتر استفاده کنید.