تست لود سرور مجازی لینوکس با استفاده از ApacheBench
مقدمه:
تست لود ایده خوبی قبل از گسترش است.خوب است که به سرعت ،سناریوی بهترین حالت را برای پروژه خود قبل از اجرای تست های جزئی تر تعیین کنید.
ابزار (ApacheBench(abمی تواند تست لود سرورها را توسط ارسال یک تعداد دلخواه از درخواست های همزمان انجام دهد.اگر چه ab برای تست نصب و راه اندازی آپاچی طراحی شده بود ولی می تواند برای تست هر سرور HTTP استفاده شود.
در این مقاله ما خواهیم دید که یک مفسر روبی با سرورهای متفاوت تحت لود چگونه عمل می کند.در مراحل آموزش از اوبونتو ۱۰٫۱۳ استفاده شده و نتایج از سرور۵۱۲MB گرفته شده است.
نصب
بسته پایگاه داده را رفرش کنید.
apt-get update
بسته apache2-utils برای دسترسی به ApacheBench نصب کنید.
apt-get install apache2-utils
کاربر با امتیاز محدود
سپس کاربری ایجاد کنید که که روبی را مدیریت خواهد کرد.ایده خوبی نیست که در ادامه برای اجرای دستورات از یوز با دسترسی روت استفاده کنید.
useradd -m -d /home/test -s /bin/bash -g sudo test
این دستور چه انجام می دهد :
useradd –یک کاربر جدید ایجاد می کند.
-mدایرکتوری home را ایجاد می کند.
-d /home/test دایرکتوری خانگی کاربر را بر روی /home/test تنظیم می کند.
-s /bin/bash – پوسته bashکاربر را به صورت پیش فرض می سازد.(اوبونتو به صورت پیش فرض از dash استفاده می کند)
-g sudoکاربر را به گروه sudo اضافه می کند.(برای اجرای دستورات با sudo)
Test- نام کاربر جدید است.
پسورد را برای کاربر جدید تنظیم کنید.
passwd test
به کاربر جدید سوئیچ کنید.
su test
RVM
مدیر نسخه روبی، کار کردن با انواع محیط های روبی را آسان کرده است.آن مراقب عملیات نصب نسخه های خاص روبی است و توسط اجرای اسکریپت bash از وب سایت آنها نصب می شود.
\curl -L https://get.rvm.io | bash -s stable
برای استفاده از دستور rvm شما ابتدا نیاز به اجرای اسکریپت rvm دارید.
source ~/.rvm/scripts/rvm
اگر می خواهید،می توانید آن را داخل .bashrc بگذارید بنابراین rvm هر زمان که شما به عنوان کاربر لاگین می شوید در دسترس خواهد بود.
echo "source ~/.rvm/scripts/rvm" >> ~./bashrc
شما می توانید توسط دستور زیر تایید کنید که اسکریپت rvm مورد استفاده قرار گرفته است. آن باید function باشد و hashed نباشد.
type rvm | head -1 rvm is a function
سپس نصب rvm2.0.0 پسورد کاربر را خواهد خواست به خاطر اینکه آن قبل از نصب روبی نیاز به نصب مجموعه وابسته دارد .از آنجائیکه rvm روبی را از مبدا می سازد، این مرحله قدری طول می کشد.
rvm install 2.0.0
به روبی جدید سوئیچ کنید.این ممکن است به صورت پیش فرض بعد از نصب اتفاق بیفتد اما چک کردن ضرری ندارد.
rvm use 2.0.0
تست کردن
حالا که روبی نصب شده است شما می توانید یک سایت ساده ایجاد کنید و ببینید چه مقدار درخواست را می تواند پاسخ بدهد.
Sinatra را نصب کنید .آن یک چارچوب میکرو/DSL برای ایجاد برنامه های کاربردی وب روبی است .پرچم –no-*باعث می شود که از مستندات عبور کند.
gem install sinatra --no-rdoc --no-ri
یک نمونه از برنامه کاربردی sinatraرا که صرفا “hello world” را در خروجی چاپ می کند ایجاد کنید.
cd ~ vim app.rb # app.rb require 'sinatra' get '/' do 'hello world' end
سرور را اجرا کنید.
ruby app.rb
هنگامی که سرور سرانجام بالا آمد شما می توانید تست سرور مجازی را انجام دهید.با استفاده از فرمان ab به صورت زیر:
ab -n <num_requests> -c <concurrency> <addr>:<port><path>
یک ترمینال دیگر باز کنید و دوباره به سرور ssh کنید.یک تست را با ApacheBenchاجرا کنید. من از هزار درخواست با همزمانی ۱۰۰ درخواست استفاده کردم. علامت “/” نهایی را برای مسیر فراموش نکنید.
ab -n 1000 -c 100 http://localhost:4567/ Server Software: WEBrick/1.3.1 Server Hostname: localhost Server Port: 4567 Document Path: / Document Length: 11 bytes Concurrency Level: 100 Time taken for tests: 3.410 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 288000 bytes HTML transferred: 11000 bytes Requests per second: 293.23 [#/sec] (mean) Time per request: 341.034 [ms] (mean) Time per request: 3.410 [ms] (mean, across all concurrent requests) Transfer rate: 82.47 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 2.0 0 11 Processing: 185 332 90.3 311 578 Waiting: 28 280 83.2 267 574 Total: 193 333 89.7 311 578 Percentage of the requests served within a certain time (ms) ۵۰% ۳۱۱ ۶۶% ۳۵۷ ۷۵% ۴۲۳ ۸۰% ۴۴۶ ۹۰% ۴۶۷ ۹۵% ۴۸۰ ۹۸% ۴۹۰ ۹۹% ۵۰۱ ۱۰۰% ۵۷۸ (longest request)
نتایج من همگرا به حدود ۳۰۰ درخواست در ثانیه بود. WEBrick برای سرعتش مشهور است. با ctrl+c فرستادن درخواست ها را در سرور قطع کنید.
نصب Thin
Thin یک وب سرور مشهور روبی است که از Mongrelبرای تجزیه واز EventMachine برای IO غیر قابل مسدود استفاده می کند.Thin را نصب کنید و سرور را دوباره اجرا کنید Sinatra.باید به صورت اتوماتیک Thin را لود کند و به شما اطلاع دهد(“..با بک آپ گیری از Thin”)
gem install thin ruby app.rb
اکنون دوباره عملیات تست را اجرا کنید.حالاباید یک مقدار سریعتر شده باشد.
Server Software: thin Server Hostname: localhost Server Port: 4567 Document Path: / Document Length: 11 bytes Concurrency Level: 100 Time taken for tests: 1.339 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 244000 bytes HTML transferred: 11000 bytes Requests per second: 747.00 [#/sec] (mean) Time per request: 133.870 [ms] (mean) Time per request: 1.339 [ms] (mean, across all concurrent requests) Transfer rate: 178.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.8 0 8 Processing: 55 128 19.9 132 155 Waiting: 42 116 19.7 121 144 Total: 62 129 18.5 132 156 Percentage of the requests served within a certain time (ms) ۵۰% ۱۳۲ ۶۶% ۱۳۵ ۷۵% ۱۳۷ ۸۰% ۱۳۹ ۹۰% ۱۴۴ ۹۵% ۱۴۹ ۹۸% ۱۵۲ ۹۹% ۱۵۵ ۱۰۰% ۱۵۶ (longest request)
سرانجام در این حالت به نظر می رسد که Thin به مقدار قابل توجهی سرورسریع تری ازWEBrick می باشد که بیش از ۷۰۰ دستور در ثانیه است.(شما می توانید سعی کنید که تعداد درخواست ها را بالا ببرید اما برای من زیاد بالا نرفت)
نکته: من قادر بودم که ۱۰۰۰ درخواست در ثانیه را از سرور Arch Linux بگیرم.
نتیجه گیری
به طور آشکار این نتایج کارایی واقع بینانه سرور را منعکس نمی کنند. HTTP فقط قطعه ای از یک پازل است.یک س قالب گیرنده آهسته و /یا پایگاه داده ، باعث خواهند شد که این اعداد به مقدار قابل توجهی پایین بیایند.با وجود این ارقام براورد سریع را برای مقایسه در اختیار شما قرار می دهد.
ابزارهای عملکرد دیگر که ممکن است مورد علاقه شما باشد:
ترجمه توسط : آرزو رنجبرپور
سلام.وبسایتتون خیلی خوب و مفیده.به کارتون ادامه بدین
خسته نباشید مرسی به خاطر این وبسایت مفید
مرسی به خاطر این مطلب مفید
سلام.ممنون از سایت مفید شما.موفق باشید.
عالی هستد سایتتون مرسی واقعا