siege -h
Usage: siege [options] siege [options] URL siege -g URL Options: -V, --version VERSION, prints the version number. -h, --help HELP, prints this section. -C, --config CONFIGURATION, show the current config. -v, --verbose VERBOSE, prints notification to screen. -q, --quiet QUIET turns verbose off and suppresses output. -g, --get GET, pull down HTTP headers and display the transaction. Great for application debugging. -p, --print PRINT, like GET only it prints the entire page. -c, --concurrent=NUM CONCURRENT users, default is 10 -r, --reps=NUM REPS, number of times to run the test. -t, --time=NUMm TIMED testing where "m" is modifier S, M, or H ex: --time=1H, one hour test. -d, --delay=NUM Time DELAY, random delay before each requst -b, --benchmark BENCHMARK: no delays between requests. -i, --internet INTERNET user simulation, hits URLs randomly. -f, --file=FILE FILE, select a specific URLS FILE. -R, --rc=FILE RC, specify an siegerc file -l, --log[=FILE] LOG to FILE. If FILE is not specified, the default is used: /var/log/siege.log -m, --mark="text" MARK, mark the log file with a string. between .001 and NUM. (NOT COUNTED IN STATS) -H, --header="text" Add a header to request (can be many) -A, --user-agent="text" Sets User-Agent in request -T, --content-type="text" Sets Content-Type in request --no-parser NO PARSER, turn off the HTML page parser --no-follow NO FOLLOW, do not follow HTTP redirects Copyright (C) 2017 by Jeffrey Fulmer, et al. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
siege -V
SIEGE 4.0.4
Copyright (C) 2017 by Jeffrey Fulmer, et al.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
siege -C
CURRENT SIEGE CONFIGURATION
Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.4
Edit the resource file to change the settings.
----------------------------------------------
version: 4.0.4
verbose: false
color: true
quiet: false
debug: false
protocol: HTTP/1.1
HTML parser: enabled
get method: HEAD
connection: close
concurrent users: 25
time to run: n/a
repetitions: n/a
socket timeout: 30
cache enabled: false
accept-encoding: gzip, deflate
delay: 0.000 sec
internet simulation: false
benchmark mode: false
failures until abort: 1024
named URL: none
URLs file: /etc/siege/urls.txt
thread limit: 255
logging: false
log file: /var/log/log/siege.log
resource file: /home/reganto/.siege/siege.conf
timestamped output: false
comma separated output: false
allow redirects: true
allow zero byte data: true
allow chunked encoding: true
upload unique files: true
no-follow:
- ad.doubleclick.net
- pagead2.googlesyndication.com
- ads.pubsqrd.com
- ib.adnxs.com
siege -c 1 -t 5s -v https://sokanacademy.com/
siege -c 1 -t 5s -q https://sokanacademy.com/
Lifting the server siege.
siege -c 1 -t 5s -v -g http://sokanacademy.com/
GET / HTTP/1.0
Host: sokanacademy.com
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.4
Connection: close
HTTP/1.0 200 OK
X-Powered-By: PHP/7.3.5
Set-Cookie: PHPSESSID=30be78e91c15f84546c4bf07c4b21ea4; expires=Mon, 08-Jul-2019 20:03:44 GMT; Max-Age=3600; path=/; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
X-XSS-Protection: 1; mode=block
X-Frame-Options: deny
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=63072000
Referrer-Policy: same-origin
Feature-Policy: fullscreen 'none'
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Mon, 08 Jul 2019 19:03:44 GMT
Accept-Ranges: bytes
Server: LiteSpeed
Connection: close
siege -p http://sokanacademy.com/
وقتی یک برنامه تحت وب شروع به کار میکند شاید در نگاه اول همه چیز خوب به نظر برسد اما با رشد کاربران و افزایش ترافیک، سیستم چگونه کار خواهد کرد؟
اگر برنامه تحت وب را یک جعبه در نظر بگیریم،درخواست به برنامه ارسال میشود،درخواست پردازش میشود ودر نهایت پاسخی نمایش داده می شود.
با ابزار siege
میتوانیم regression test
, load test
, stress test
را به خوبی انجام دهیم.
فرض کنید میخواهید برنامه ی تحت وب خود را برای یک میلیون کاربر آماده کنید.برای تست این برنامه دو راه وجود دارد، راه اول این است که از یک میلیون کاربر بخواهید که برنامه ی شما را تست کنند و راه دوم شبیه سازی این تعداد کاربر است.
Load test
:
وقتی که برنامه تحت وب را برای تعداد مشخص و از قبل تعیین شدهای از درخواست ها تست میکنیم،به این حالت load test
می گویند.
Stress test
:
اگر تعداد درخواست از سطح مشخص شده فراتر رود در این صورت تست را stress test
می گویند.
Regression test
:
وقتی تغییری در نرمافزار داده می شود،چگونه بفهمیم کارایی نرمافزار افزایش یافته است یا کاهش؟ برای حصول اطمینان از یکسان بودن کارایی سرور قبل و بعد از تغییر، regression test
انجام می شود.
اگر بخواهیم زیرساخت ها ی پروژه را تغییر دهیم دوباره به regression test
نیاز خواهیم داشت.فرض کنید پروژه بر روی وب سرور Apache
باشد و بخواهیم وب سرور را به Nginx
تغییر دهیم. قبل از تغییر وب سرور،برنامه به صورت میانگین قادر به مدیریت N در خواست در دقیقه است. از کجا معلوم که با تغییر وب سرور کارایی برنامه کاهش نیابد و همچنان N در خواست در دقیقه قابل مدیریت باشد؟
مراحل انجام یک تست موفق:
برنامه ریزی:
در این مرحله باید به سؤالاتی از این قبیل پاسخ داده شود.چه چیزی باید تست شود؟چه انتظاری از تست وجود دارد؟ترافیک روی سرور چقدر باید باشد؟تست بر روی کدام آدرس باید انجام شود؟ و . . .
آماده سازی:
در این مرحله باید از ایزوله بودن محیط تست اطمینان حاصل شود.برای انجام تست های بعدی هم از همین محیط ایزوله استفاده کنید.
آنالیز:
نتایج حاصل از تست باید مورد ارزیابی دقیق قرار گیرند.
شروع کار با Siege:
siege
ابزاری فوقالعاده برای بنچمارک گیری و تست اپلیکیشن های تحت وب است.این ابزار کاربران همزمان را برای تست اپ های تحت وب شبیه سازی می کند.
نصب:
در توزیع ابونتو ابزار siege بدین صورت نصب می شود:
sudo apt-get install siege
ایجاد سرور آزمایشی:
برای این آموزش یک سرور با استفاده از تورنادو ایجاد می کنیم.
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.httpserver
from tornado.options import options, define
define("port", default=8888, help="run on the given port", type=int)
class Appliaction(tornado.web.Application):
def __init__(self):
urlpatterns = [
(r"/", HomeHandler),
]
settings = dict(
debug=True,
)
super().__init__(urlpatterns, **settings)
class HomeHandler(tornado.web.RequestHandler):
def get(self):
self.write({'status': 'Ok'})
def main():
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Appliaction())
http_server.listen(options.port)
print('Server started on port {}'.format(options.port))
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
برای اجرای این اپلیکیشن باید پایتون و تورنادو نصب باشد.(البته میتوانید سرور را با زبانهای دیگری نیز ایجاد کنید)این برنامه به صورت پیشفرض بر روی پورت 8888 اجرا میشود اما میتوانیم باآرگومان --port =PORT
پورت را تغییر دهیم.با دستور python serverName.py --port=PORT
سرور را اجرا می کنیم. اگر به آدرس localhost:8888
در خواستی ارسال شود،خروجی json
برگشت داده می شود.
اصول اولیه کار با siege:
برای شروع کار دستورات زیر را در شل اجرا کنید:
siege URL
به جای URL باید آدرس مورد نظر جایگزین شود.در این صورت تست با پارامتر های پیشفرض انجام می شود.برای اتمام تست از کلید های ترکیبی CTRL+C
استفاده کنید.
اولین تست:
siege -c 1 -r 1 http://localhost:8888/
خروجی به صورت زیر است:
** SIEGE 4.0.4
** Preparing 1 concurrent users for battle.
The server is now under siege.
Transactions: 1 hits
Availability: 100.00 %
Elapsed time: 0.01 secs
Data transferred: 0.00 MB
Response time: 0.01 secs
Transaction rate: 100.00 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 1.00
Successful transactions: 1
Failed transactions: 0
Longest transaction: 0.01
Shortest transaction: 0.01
تست برای یک بار (-r 1)
و برای یک کاربر(-c 1)
بر روی آدرس http://localhost:8888/
انجام می شود.
تحلیل خروجی تست:
Transaction:برای هر کلاینت از طرف سرور یک سوکت باز می شود،درخواست مدیریت می شود،پاسخ برگشت داده میشود و درنهایت سوکت بسته می شود.این ها کارهایی است که در یک تراکنش انجام می شود.
Avaliability:
درصد کانکشن هایی است که با موفقیت توسط سرور مدیریت شده اند.
Elapsed time:
زمان انجام تست است.
Data transferred:
مجموع دادههایی است که از طرف سرور به هر کاربر شبیه سازی شده ارسال شده است.
Response time:
میانگین زمانی برای پاسخ به درخواست یک کاربر شبیه سازی شده است.
Transaction rate:
میانگین تعداد تراکنش هایی است که سرور میتواند در یک ثانیه مدیریت کند(Transaction / Elapsed time)
Throughput:
میانگین تعداد بایت هایی است که در هر ثانیه از سرور به تمام کاربران شبیه سازی شده انتقال می یابد.
Concurrency:
حاصل تقسیم تعداد کل تراکنش ها به زمان کل سپری شده است(Transaction/ Elapsed time ).هر چه این عدد بزرگتر باشد،کارایی سرور کمتر است.
Successful transactions:
تعداد دفعاتی که کد پاسخ(response code)برگشت داده شده از طرف سرور کوچک تر از 400 است.(تراکنش با موفقیت انجام شده باشد)
Failed transactions:
تعداد دفعاتی که کد پاسخ برگشت داده شده از طرف سرور بزرگتر یا مساوی 400 باشد به علاوه تراکنش هایی که اصطلاحاً timeout می شوند.
Longest transaction:
بیشترین زمانی که یک تراکنش طول کشیده است.
Shortest transaction:
کمترین زمانی که یک تراکنش طول کشیده است.
اگر میخواید آدم موفقی یا اقلا آدم مفیدی» باشید چند تا نکته هست که دوست داشتم باشما به اشتراک بزارم.
۱ - به بهترین و بهینه ترین روش اطلاعاتتون رو افزایش بدید:
الف)کتاب های صوتی همواره گزینه ی مناسبی هستن برای اینکه اطلاعاتتون رو افزایش بدید.می تونید هم ورزش کنید و هم کتاب صوتی گوش بدید یعنی در یک زمان دو کار رو انجام بدید.کتاب های صوتی به وفور در اینترنت یافت میشه میتونید به کتابخونه صوتی
ب)برای دریافت همه ی اخبار و مطالب مورد علاقتون به جای باز کردن چندین تب در مرورگر و تلف شدن زمانتون سعی کنید از کلاینت های RSS استفاده کنید.شما می تونید سایت رو به کلاینت RSS معرفی کنید و مطالب جدید رو در کلاینت خودتون داشته باشید بدون اینکه بخواید زمان زیادی رو برای باز کردن تب های زیادی تو مرورگر صرف کنید.
کلاینت RSS پیشنهادی من برای دسکتاپ QuiteRSS هستش که قابلیت استفاده ی آفلاین رو هم فراهم میکنه و برای کلاینت موبایل هم Feedly رو پیشنهاد می کنم.البته کلاینت های زیادی برای پلتفرم های متفاوت وجود داره و با هر کدوم که راحت بودید می تونید کار کنید.برای OS x می تونید از
ج) اوووه عجب مطلب خفنی ولی حیف وقت ندارم بخونم !
خب کار رو به pocket بسپارید.طرز کار پاکت ایطوریه که اگر مطلبی رو دوست داشتید ولی وقت نداشتید که اون رو بخونید می تونید مطلب رو به پاکت بدید تا براتون نگه داره و هرموقع وقت کردید مطلبتون رو بخونید.ایطور هم مطالب مورد علاقتون رو دارید وهم یه کتابخونه ی خوب خواهید داشت.پلاگین پاکت به صورت پیش فرض بر روی فایرفاکس اوبونتوی من نصبهبقیه سیستم ها رو نمی دونم» اما می تونید پاکت رو از
۲ - هرگز به حافظتون اطمینان نکنیدالبته استثنا هم داریم که اون استثنا من نیستم!»
چیزی رو که من یاد گرفتم اینه که بزرگترین اشتباه یه برنامه نویس یا هر انسانی» اینه که به حافظش اطمینان کنه! هر روز اطرافمون حوادث زیادی اتفاق میفته و حافظه ما ناچاره که همه رو ثبت کنه حالا از کجا معلوم کار مهمی رو که تو ذهنمون ثبت کردیم تا تو یه زمان خاص انجام بدیم به یاد بیاریم؟اگر می تونید از دفترچه جیبی استفاده کنید که خیلی خب ولی اگر مث من یه کم تمبل تشریف دارید
۳ - تمرکز کنید
یه استادی می گفت:"راز موفقیت تمرکز کردن است".یادم میاد خیلی وقت پیش برا یه جایی یه مطلب نوشتم با این عنوان از این شاخه به اون شاخه نپرید» .مخاطب مطلب هم برنامه نویسانی بود که یه روز C می خونن یه روز دیگه PHP روز دیگه ASP و
این خیلی بده.اقیانوسی به عمق یه میل!
وباز هم به یاد یکی از کنفرانس های تدTED» افتادم.یه هندی به اسم ماشالکار» که نمی دونم کی بود یا چکار کرده بود راز سوزانده شده اجسام توسط ذره بین رو جمع کردن شعاع های نوری در یه نقطه و متمرکز کردن اونا می دونست.
چطور تمرکز کنم؟
راحت ترین کاری که می تونید انجام بدید تهیه به تودو لیست TODO list» و نوشتن کارهاییه که باید انجام بدید. بااین کار در هر لحظه فقط به یه موضوع فکر می کنید ودرواقع ذهن رو از کارهای دیگه فارغ کردید.اوبونتو ۱۸.۰۴ یه تودولیست خیلی خوب داره ولی می تونید از
نه اینکه من همه ی اینایی رو که گفتم دقیق و درست انجام بدم هاااا ولی همیشه سعی کردم این نکته ها رو تو زندگیم مد نظر داشته باشم.و خب share جزئی از DNA منه :)
آپدیت :
خودم رو گوشی از Feedly استفاده می کنم و رو ابونتو از Quiterss
* ساخت دیکشنری با امکان کش
* نقشه تحت وب از آتشقشان های جهان: یک نقشه ی تحت وب interactive که لوکیشن آتشفشان های جهان در آن قابل مشاهده است.
* ساخت وبسایت شخصی با پایتون: ساخت یک وبسایت شخصی با یکی از فریم ورک های پایتونی
* ساخت یک برنامه برای کتابفروشیها: یک برنامهی گرافیکی تحت دسکتاپ به همراه یک دیتابیس بکاندی
* ساخت اپ موبایل با پایتون
* تشخیص حرکت با استفاده از پایتون: شناسایی اشیا متحرک با استفاده از وبکم لپتاپ
* ساخت یک وب اسکرپر
* اپ تحت وب به همراه دیتابیس: یک اپ تحتوب که اطلاعاتی را جمعآوری کرده و سپس یک ایمیل ارسال میکند.
* ساخت یک اپ Gecoder: با دریافت آدرس، lan و lat را به دست آوریم و برعکس
* یک چت روم با قابلیت ثبت نام و ورود و ایجاد پروفایل و حذف اکانت:
ثبت نام شامل فیلدهای نام کاربری،پسورد، تکرار پسورد باشد.
در دسترس بودن نام کاربری چک شود.
شامل فیلد ریکپچای پنهانی باشد که با سه بار اشتباه تایپ کردن یوزر پس مرئی شود.
ویرایش پروفایل شامل تنظیم آواتار برای اکانت و تغییر نام کاربری است.
حذف اکانت منجر به حذف تمام پیام های آن اکانت خواهد شد.
در ورژن یک تنها امکان ارسال پیام ساده فراهم باشد.
در ورژن های بعدی امکان reply، delete برای پیام ها - امکان ارسال فایل - ایجاد روم و join و leave شدن به/از آن ها - pv امن وجود داشته باشد.
* یک ماشین حساب تحت وب
* یک بازی دوز دونفره تحت وب
* یک image background remover تحت وب با قابلیت مشاهده آنی عکس ویرایش شده
* یک پیج برای بیمه کردن اتومبیل:
دکمه ها -> ثبت - پیش نمایش - اضافه کردن خودرو درج سطر» - اضافه کردن ویژگی درج ستون» - حذف سطر خودرو» - حذف ستون ویژگی»
ویژگی ها -> نام، مدل، شماره بدنه ،رنگ
* یک ساعت سون سگمنتی تحت وب
* یک Terminal Emulator تحت وب
* چگونگی برقراری ارتباط یک میلیون ترمینال تحت وب جاوااسکریپتی با سرور. مثل کاری که در pythonanywhere انجام شده است.
فدورا ۳۳ با دسکتاپ دیپین نصب کردم ولی چنگی به دل نمیزد. دیپین خوشگله ولی کارایی لازم رو نداره. یه خوشگل به دردنخور! فدورا ۳۴ با دسکتاپ کیدیای نصب کردم اول کاری انتخاب بین wayland و x11 برام جالب به نظر اومد ولی شروع کار با wayland همانا و خراب شدن اعصاب و روان همانا. معلومه که این دوست جدیدمون تازه وارده و به خوبی با فدورا مچ نشده نمیدونم ولی ترجیح دادم باز برگردم رو ایکس الون. ای وای! این همه برنامه از پیش نصب شده! فکر میکردم این نسخهای که از فدورا دانلود کردم نسخه لایت یا همچین چیزی باشه که فقط کرنل و بعضی برنامههای خیلی مهم رو نصب داشته باشه ولی مثل اینکه اشتباه فکر میکردم. کلی برنامه از قبل رو سیستم نصب شدن که به درد من نمیخورن. راه چاره؟ یکی یکی همه رو حذف کردم ); چند تا برنامه به نظرم مفید اومدن که نگهشون داشتم مثلا Kamoso یا مجموعه LibreOffice. خب بریم برا نصب برنامههای مورد نیاز. Vim اولین برنامهایه که هر جا میرم باید نصب کنم همه فلیورهای لینوکسی یه تکس ادیتور پیشفرض دارن به اسم Nano ولی راستش رو بخوای هیچ وقت نتونستم یادش بگیرم. یه جوریه!Tmux میتونه قدم بعدی باشه.اه مثل اینکه فدورا سیوچهار به صورت پیشفرض تیماکس رو داره. ایول! نوبت میرسه به Zsh وبعد همCurl. کرل رو هم پیشفرض داره. براوو! یه دونه IDE یا تکس ادیتور هم میخوایم که مثل همیشه انتخابم VSCode . برنامهنویسا اکثر سروکارشون با مستندات و این چیزاست Zeal برا مرور مستندات خیلی خوبه و خیلی کار را بندازه. اینو هم همیشه نصب میکنم. آها! باید دیکشنری هم داشته باشیم دیگه، نه؟ به نظرم GoldenDict انتخاب خوبی باشه. ای داد! موقع معرفی و اسکن فایلهای Glossary خود به خود کرش میکنه ); اینو فعلا میگذاریم برا بعدا. یادم رفته بود که باید Telegram دسکتاپ و هم باید نصب کنم. برای ورود بارکد مارکد و ازین چیزا آورد که قبلا خبری ازشون نبوده ولی بدون مشکل اوکی شد. یه دونه App Launcher درست و حسابی هم میخوایم که دیگه کارمون درست بشه! فکر میکنم Ulauncher گزینه مناسبی باشه البته سه تا اکستنژن برا یولانچر نصب کردم یکی Terminal Runner برای اجرای دستورات ترمینال تو محیط لانچر دومی IP Analysis که راستش رو بخواین به دردم نمیخورد ولی تو صفحه اکستنژنهای لانچر که میگشتم، به نظرم جالب اومد و نصبش کردم وقتی بهش آدرس رو میدی آیپی و مشخصات سرور رو بهت میده اگر هم آدرسی بهش ندی، آیپی که با اون به اینترنت وصل میشی رو بهت میده. سومی هم Process Killer که باهاش میشه راحت و سرراست پراسسها رو کیل کرد البته همین کارو میشه با System Activity (Ctrl+esc) انجام داد ولی دوست دارم با لانچر ور برم و برام همه کاره باشه. دیگه چی میخوایم؟ فدورا ۳۴ چند تا برنامه برای پخش آهنگ داره که خدایی به درد نمیخورنElisa، Dragon، Juk همه رو حذف کردم و VLC نصب کردم خلاص! Audacity و هم احتمالا برای ادیت صدای ضبط شده نیاز داشته باشیم راستش نمیدونم چجوری کار میکنه ولی ضرری نداره نصبش میکنم. یه کم باهاش ور میرم که ببینم چیبهچیه. آخر سری هم باید برنامه اسکرین رکوردر درست و حسابی نصب کنیم. بزارید یه کم سرچ کنم . . . OBS-Studio، SimpleScreenRecorder، VokoScreenNG و برنامههایی از این قماش. نمیدونم. اوبیاس خیلی پیشرفته به نظر میرسه. هم برای رکورد اسکرین استفاده میشه هم برای استریم. SSR طوری که اسمش برمیاد امکانات زیادی نداره و ووکواسکرینانجی هم از انجی(Next Generation) آخرش برمیاد که فورک یک پروژه دیگه باشه. بهتره ببینم اوبیاس چیه. یکی دو ساعت بعد… نه! اوبیاس به درد من نمیخوره. خیلی پیچیده و گنگه حداقل به درد من نمیخوره. آه و ناله از دست اوبیاس که شروع میشه، داداش کوچیکه - که فن پروپاقرص ویندوزه - باز سروکلش پیدا میشه بهم میگه باز چیشده؟ گفتم که برنامه درست و حسابی و راحت برا ضبط اسکرین میخوام که صدا رو هم به خوبی ضبط کنه. بهم میگه ویندوز برنامههای خوبی برای ضبط اسکرین داره مثلا Camtasia یا ScreenRecorder و … چرا ویندوز نصب نمیکنی؟!(: نگاهی انداختم بهش و باز برگشتم سر کارم. باید برنامه دیگهای رو امتحان کنم. VokoScreenNG. برنامه خوبیه ولی یه کم ناپایداره ولی برنامه خوب و جمعوجوریه به جز اسکرین و صدا، تصویر وبکم رو هم ضبط میکنه. البته شاید آخری مورد من نباشه. بعد از چند بار کرش ووکواسکرینانجی تصمیم گرفتم SimpleScreenRecorder رو هم امتحان کنم.ای ول!ای وی! ای ول! این همون چیزیه که میخواستم. Simple توی اسمش به خاطر سادگی کار با برنامهاست نه امکانات کم برنامه! داداش کوچیکه بیا و ببین! برنامههای دیگهای مثل Freeplane، Remarkable ، Kdenlive و هم باید احتمالا نصب کنم. برمیگردم.
آخر سری centos 7 و میزکار kde4 نصب کردم!
firefox -no-remote -P &
127.0.0.1 www.varzesh3.com
درباره این سایت