قم بتنزيل الثنائي هنا. أيضا ، يرجى التفكير في الاستشهاد بنا.
مولد تحميل HTTP هو مولد تحميل مصمم لإنشاء أحمال HTTP مع شدة تحميل متفاوتة. يستخدم مواصفات شدة الحمل كما هو محدد بواسطة Limbo لإنشاء أحمال تختلف في شدة (عدد الطلبات في الثانية) بمرور الوقت. يقوم تحميل مولد تحميل بيانات مستوى التطبيق ويدعم التواصل مع شياطات قياس الطاقة الخارجية. إنه يحدد طلبات HTTP نفسها باستخدام البرامج النصية LUA ، والتي تتم قراءتها في وقت التشغيل.
يمكن تشغيل أداة مولد Load HTTP في وضعين: كمخرج ومولد تحميل. يبدأ وضع المخرج الأداة في وضع حيث يقوم بتوزيع الملفات الشخصية والبرامج النصية اللازمة ، ويتصل بأجهزة قياس الطاقة ، ويجمع البيانات. يتلقى وضع مولد التحميل إرشادات من المدير وينشئ الطلبات الفعلية. يتم تعيين الوضع باستخدام مفاتيح سطر الأوامر ، مما يعني أنه يجب تشغيل حالتين على الأقل من مولد تحميل HTTP لاختبار ، واحد في كل وضع. يدعم Generator HTTP Load أيضًا توليد تحميل متعدد العقد ، حيث يتصل أحد المخرجين بمثيلات متعددة تعمل في وضع مولد التحميل.
هيكل هذا ReadMe:
يحتوي مولد الحمل على الميزات الأساسية الثلاثة التالية:
يمكن استخدام مولد التحميل لاختبار تطبيقات الويب فيما يتعلق باختبار كفاءة الطاقة ، واختبار سلوك التحجيم مع مرور الوقت ، واختبار السيناريوهات التي تعتمد على الوقت ، مثل تأثير الانفجارات المفاجئة ، والاختلافات الموسمية في أنماط الطلب ، والاتجاهات ، وما إلى ذلك.
أولاً بناء أو تنزيل httploadgenetor.jar. نشر httploadgenerator على جهازين:
بالإضافة إلى الجرة ، تحتاج إلى ملف تعريف كثافة الحمل ونصي LUA لإنشاء الطلبات الفعلية. نحن نقدم مثالًا لكل دليل في دليل مثال:
قم بتنزيل كل من الملفات ووضعها على آلة المخرج. من أجل البساطة ، سوف نفترض أنك تضعها في نفس الدليل مثل httploadgenerator.jar . يمكنك الآن أيضًا تعديل البرنامج النصي LUA مع مكالمات لتطبيق الويب الخاص بك. للحصول على حد أدنى ، فقط تأكد من أن index.html و index.htm يمكن الوصول إليها وإدخال adress من الخادم الذي يستضيف تطبيق الويب في السطر 7 من البرنامج النصي.
الآن ، على جهاز مولد التحميل ، قم ببدء تشغيل مولد تحميل HTTP في وضع مولد التحميل ، باستخدام سطر الأوامر التالي مع مفتاح -L . إذا كنت تستخدم آلات مولدات التحميل المتعددة ، فقم بذلك على كل منهم:
$ java -jar httploadgenerator.jar loadgenerator
بعد ذلك ، على جهاز Director ، ابدأ مولد تحميل HTTP في وضع المخرج:
$ java -jar httploadgenerator.jar director --ip IP_OF_THE_LOAD_GENERATOR_MACHINE --load curveArrivalRates.csv -o testlog.csv --lua http_calls_minimal.lua
الدعوة المخرج تفعل ما يلي:
director وضع المخرج.--ip يحدد عنوان جهاز مولد التحميل. بالنسبة لمولدات التحميل المتعددة ، استخدم محدد فاصلة (لا توجد مساحات بيضاء!).--load ملف تعريف كثافة الحمل (معدل الوصول).-o يحدد اسم سجل O utput ، الذي يحتوي على النتائج.--lua يحدد البرنامج النصي L UA.سيقوم المخرج الآن بالاتصال بمولد التحميل ، وإرسال ملف تعريف كثافة التحميل ، والبرنامج النصي ، والإعدادات الأخرى. سيطالبك بعد ذلك بالضغط على Enter لبدء الاختبار. بمجرد انتهاء الاختبار ، سيظهر ملف سجل الإخراج في الدليل.
نظرًا لأنك لا ترغب دائمًا في تشغيل ملفات تعريف المثال ، يمكنك تحديد خاص بك. نحدد شدة التحميل (معدل الوصول) والطلبات بشكل منفصل في ملفات منفصلة.
أسهل طريقة لإنشاء ملف تعريف كثافة الحمل هي استخدام أداة النسيان. Limbo هو المكون الإضافي Eclipse لنمذجة معدلات وصول. يمكنك تصميم معدلات الوصول باستخدام محرر رسومي ثم تصديرها إلى تنسيقات مختلفة. يدعم مولد تحميل HTTP اثنين من هذه التنسيقات:
للحصول على ملفات من هذا التنسيق ، انقر بزر الماوس الأيمن على ملف .dlim Model في Eclipse Package Explorer ، ثم حدد إنشاء الطوابع الزمنية . يظهر مربع حوار مع خيارات التصدير ويجب أن يكون خيارنا المدعومان بينهما. في مربع الحوار التالي ، يمكنك اختيار الفاصل الزمني لأخذ العينات ، وهذا هو الفاصل الزمني الذي يعين فيه النسيان معدل الوصول وكذلك الفاصل الزمني الذي يعيد فيه مولد تحميل HTTP تعديل معدل وصول ونتائج التقارير. يمكن تكوينه بحرية ، ولكن يوصى بفاصل 1.
إذا كنت لا ترغب في استخدام Limbo (يجب عليك ذلك ، على الرغم من ذلك ، يمكنك أيضًا زيادة معدلات الوصول يدويًا. إن تنسيق الملف هو تنسيق CSV بسيط ، حيث يكون العمود الأول هو الطابع الزمني المتوسط لكل فاصل جدولة والعمود الثاني هو شدة التحميل. يجب أن يكون لدى الفواصل الزمنية نفس الخطوة دائمًا (مثل الزيادة دائمًا بمقدار 1) وقد لا تتخطى أي شيء!
مثال:
0.5,10
1.5,20
2.5,30
لاحظ أن الطابع الزمني هو دائمًا منتصف الفاصل. وهذا يعني أنه 0.5 ، 1.5 ، ... بدلاً من 0 ، 1 ، ... هذا هو التوافق مع النسيان ، حيث يكون قرار التصميم هذا أكثر منطقية. مرة أخرى ، ينصح الفواصل الزمنية بفترة واحدة (0.5 ، 1.5 ، 2.5 ، ...).
يتم تحديد الطلبات باستخدام نص LUA. نوصي بتعديل أحد الأمثلة ، مثل الحد الأدنى من الأمثلة أو مثال متجر Dell DVD. تحتوي الأمثلة على تفسيرات في تعليقات الكود الخاصة بهم.
يتم استدعاء وظيفتين LUA في البرنامج النصي من قبل مولد تحميل HTTP:
يمكنك تحليل استجابة HTTP في وظيفة Oncall باستخدام تعبيرات منتظمة. نحن نقدم وظائف HTML Helper (بالنظر إلى أن الاستجابة عادة ما تكون HTML). على وجه التحديد ، نقدم:
لاحظ أن جميع التعبيرات العادية يتم تمريرها مباشرة إلى الخلفية Java. يجب تحديدها ، كما لو تم تحديدها مباشرة في رمز Java. أي ، استخدم "\" بدلاً من واحد "".
تسمى عناوين URL التي تم إرجاعها بواسطة Oncall باستخدام HTTP GET. لإرسال طلب نشر HTTP ، prepend [post] (بما في ذلك الأقواس) قبل عنوان URL الذي تم إرجاعه.
يمكنك اختبار البرامج النصية LUA باستخدام اختبار HTTP Script (قم بتنزيل الثنائي هنا). اختبار البرنامج النصي HTTP هو تطبيق رسومي يقوم بتشغيل البرنامج النصي ويجعل استجابات HTML في عرض ويب رسومي للتحقق من الوظيفة الصحيحة للنص. lauch اختبار البرنامج النصي باستخدام واجهة المستخدم الرسومية الخاص بك أو باستخدام سطر الأوامر التالي:
$ java -jar httpscripttester.jar ./MYSCRIPTFILE.lua
نوصي بسطر الأوامر ، حيث أن سطر الأوامر في الخلفية سيظهر أخطاء محتملة وبيانات طباعة LUA ، وهو أمر مفيد للغاية عند التصحيح.
يدعم مولد تحميل HTTP التواصل مع شياطين محلل الطاقة. تتمثل الفكرة العامة وراء البنية التحتية في الاتصال بشبكة خفية قد تعمل على جهاز منفصل مع محلل الطاقة. لسوء الحظ ، فإن معظم شياطين محلل الطاقة ، مثل PTDaemon ، لديها تراخيص تقييدية ، مما يحظر استخدامها مع مولد تحميل HTTP أو منعنا من تزويدها بك.
نحن نقدم واجهة ipowerCommunicator في tools.descartes.dlim.httploadgenerator.power . تنفيذ التواصل الخفي الخاص بك ضد هذه الواجهة. Hiokicommunicator هو تطبيق مرجعي يعمل يدعم أجهزة قياس الطاقة HIOKI قادرة على إيثرنت. يمكن استخدام TMCTLDCommUnicator كطالب مثال آخر.
لبدء تشغيل مولد تحميل HTTP مع تواصل الطاقة الخاص بك ، أضفه إلى ClassPath ، ثم حدد اسم الفئة المسبقة بالكامل لمواصلك باستخدام مفتاح -C لمولد تحميل HTTP في وضع المخرج. استخدم مفتاح -P لتحديد عنوان الشبكة الخاص بـ Power Daemon. يمكنك إدخال عناوين متعددة منفصلة. إذا قمت بذلك ، فسوف يقوم المخرج بتسهيل تواصل السلطة لكل من هذه العناوين وتسجيل نتائجه في عمود منفصل.
مثال (مع تجميع Communicator Power في httploadgenerator.jar):
$ java -jar httploadgenerator.jar director --ip LOADGENIP --load myArrivalRates.csv -o myLog.csv -p PWRRDAEEMONIP:PWRDAEMONPORT -c my.fully.qualified.Classname --lua./http_calls.lua
مثال (مع تجميع Communicator Power في جرة منفصلة):
$ java -cp "MYJAR.jar;httploadgenerator.jar" tools.descartes.dlim.httploadgenerator.runner.Main director --ip LOADGENIP --load myArrivalRates.csv -o myLog.csv -p PWRRDAEEMONIP:PWRDAEMONPORT -c my.fully.qualified.Classname --lua ./http_calls.lua
استخدم مفتاح -h لإظهار صفحة المساعدة:
Usage: java -jar httploadgenerator.jar COMMAND [<options>...]
HTTP load generator for varying load intensities.
-h, --help Display this help message.
Commands:
director Run in director mode.
loadgenerator Run in director mode.
Run java -jar httploadgenerator.jar director -h لصفحة مساعدة المخرج:
Run in director mode.
Usage: java -jar httploadgenerator.jar director [<options>...]
Runs the load generator in director mode. The director parses configuration
files, connects to one or multiple load generators, and writes the results to
the result csv file.
--randomize-users With this flag, threads will not pick users (HTTP input
generators, LUA script contexts) in order. Instead, each
request will pick a random user. This setting can
compensate for burstiness, caused by the fixed order of
LUA calls. It is highly recommended to configure long
warmup times when randomizing users.
--wd, --warmupduration, --warmup-duration=WARMUP_DURATION
Duration of the warmup period in seconds. Warmup is
skipped if set to 0.
Default: 30
--wp, --warmupause, --warmup-pause=WARMUP_PAUSE
Duration of the pause after conclusion of the warmup
period in seconds. Ignored if warmup is skipped.
Default: 5
--wr, --warmup, --warmuprate, --warmup-rate=WARMUP_RATE
Load intensity for warmup period. Warmup is skipped if set
to < 1.
Default: 0.0
-a, --load, --arrivals, --loadintensity=ARRIVALRATE_FILE
Path of the (LIMBO-generated) arrival rate file.
Default: arrivalrates.csv
-c, --class, --classname, --powerclass=POWER_CLASS
Fully qualified classname of the power communicator. Must
be on the classpath.
-h, --help Display this help message.
-l, --lua, --script=LUASCRIPT
Path of the lua script that generates the call URLs.
Default: http_calls.lua
-o, --out, --log, --csv, --outfile=OUT_FILE
Name of output log relative to directory of arrival rate
file.
Default: default_log.txt
-p, --power, --poweraddress=POWER_IP[:POWER_PORT]
Adress of powerDaemon. Multiple addresses are delimited
with ",". No address => no power measurements.
Default: []
-r, --seed, --random, --randomseed=SEED
Integer seed for the random generator. Seed of 0 =>
Equi-distant dispatch times.
Default: 5
-s, --ip, --adress, --generator=IP
Adress of load generator(s). Multiple addresses are
delimited with ",".
Default: [127.0.0.1]
-t, --threads, --threadcount=NUM_THREADS
Number of threads used by the load generator. Increase
this number in case of dropped transactions.
Default: 128
-u, --timeout=TIMEOUT Url connection timeout in ms. Timout of 0 => no timout.
Default: 0
مثال إضافي:
$ java -jar httploadgenerator.jar director -s 192.168.0.201 -a ./arrivalRates/test.txt -o myLog.csv -p 127.0.0.1:8888 -c tools.descartes.dlim.httploadgenerator.power.TMCTLDCommunicator -l ./http_calls.lua
يتم كتابة النتائج إلى ملف CSV الإخراج. أنها تحتوي على المقاييس التالية لكل فاصل زمني:
-u, --timout .يرجى الإشارة إلينا إذا كنت تستخدم مولد تحميل HTTP في عملك:
@inproceedings{KiDeKo2018-ICAC-PowerPrediction,
author = {J{'o}akim von Kistowski and Maximilian Deffner and Samuel Kounev},
booktitle = {Proceedings of the 15th IEEE International Conference on Autonomic Computing (ICAC 2018)},
location = {Trento, Italy},
month = {September},
title = {{Run-time Prediction of Power Consumption for Component Deployments}},
year = {2018},
}