ดาวน์โหลดไบนารีที่นี่ นอกจากนี้โปรดพิจารณาอ้างเรา
เครื่องกำเนิดโหลด HTTP เป็นเครื่องกำเนิดโหลดที่ออกแบบมาเพื่อสร้างโหลด HTTP ที่มีความเข้มของโหลดที่แตกต่างกัน มันใช้ข้อกำหนดความเข้มของโหลดตามที่ระบุโดย Limbo เพื่อสร้างโหลดที่แตกต่างกันในความเข้ม (จำนวนคำขอต่อวินาที) เมื่อเวลาผ่านไป ตัวสร้างโหลดบันทึกข้อมูลระดับแอปพลิเคชันและรองรับการเชื่อมต่อกับ Daemons การวัดพลังงานภายนอก มันระบุคำขอ HTTP ด้วยตนเองโดยใช้สคริปต์ LUA ซึ่งอ่านในเวลาทำงาน
เครื่องมือเครื่องกำเนิดโหลด HTTP สามารถทำงานได้ในสองโหมด: ในฐานะผู้กำกับและเป็นเครื่องกำเนิดโหลด โหมดผู้อำนวยการเริ่มเครื่องมือในโหมดที่วิเคราะห์โปรไฟล์และสคริปต์ที่จำเป็นเชื่อมต่อกับอุปกรณ์การวัดพลังงานและรวบรวมข้อมูล โหมดตัวสร้างโหลดได้รับคำแนะนำจากผู้อำนวยการและสร้างคำขอจริง โหมดถูกตั้งค่าโดยใช้สวิตช์บรรทัดคำสั่งซึ่งหมายความว่าอย่างน้อยสองอินสแตนซ์ของเครื่องกำเนิดโหลด HTTP จะต้องทำงานเพื่อทดสอบหนึ่งในแต่ละโหมด เครื่องกำเนิดโหลด HTTP ยังรองรับการสร้างโหลดแบบหลายโหนดซึ่งผู้อำนวยการคนหนึ่งเชื่อมต่อกับหลายอินสแตนซ์ที่ทำงานในโหมดตัวสร้างโหลด
โครงสร้างของ readme นี้:
เครื่องกำเนิดโหลดมีคุณสมบัติหลักสามประการดังต่อไปนี้:
เครื่องกำเนิดโหลดสามารถใช้สำหรับการทดสอบเว็บแอปพลิเคชันเกี่ยวกับการทดสอบประสิทธิภาพการใช้พลังงานการทดสอบพฤติกรรมการปรับขนาดเมื่อเวลาผ่านไปและการทดสอบสถานการณ์ขึ้นอยู่กับเวลาเช่นผลของการระเบิดอย่างฉับพลันการเปลี่ยนแปลงตามฤดูกาลในรูปแบบการร้องขอแนวโน้ม ฯลฯ
สร้างหรือดาวน์โหลด httploadgenetor.jar ปรับใช้ httploadGenerator บนสองเครื่อง:
นอกเหนือจากขวดแล้วคุณต้องมีโปรไฟล์ความเข้มโหลดและสคริปต์ LUA สำหรับการสร้างคำขอจริง เราให้ตัวอย่างสำหรับแต่ละรายการในไดเรกทอรีตัวอย่างไฟล์:
ดาวน์โหลดทั้งไฟล์และวางไว้ในเครื่องผู้กำกับ เพื่อความเรียบง่ายเราจะสมมติว่าคุณวางไว้ในไดเรกทอรีเดียวกับ httploadGenerator.jar ตอนนี้คุณจะแก้ไขสคริปต์ LUA ด้วยการเรียกใช้เว็บแอปพลิเคชันของคุณ สำหรับตัวอย่างที่น้อยที่สุดเพียงตรวจสอบให้แน่ใจว่า index.html และ index.htm สามารถเข้าถึงได้และป้อนที่อยู่ของเซิร์ฟเวอร์ของคุณโฮสติ้งเว็บแอปพลิเคชันในบรรทัด 7 ของสคริปต์
ตอนนี้บน เครื่อง Load Generator เริ่มต้น HTTP Load Generator ในโหมด Load Generator โดยใช้บรรทัดคำสั่งต่อไปนี้ด้วยสวิตช์ -L หากคุณใช้เครื่องกำเนิดโหลดหลายเครื่องทำสิ่งนี้ในแต่ละเครื่อง:
$ java -jar httploadgenerator.jar loadgenerator
ถัดไปบน เครื่องผู้กำกับ เริ่มต้นเครื่องกำเนิดโหลด 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 Generator สำหรับเครื่องกำเนิดไฟฟ้าหลายตัวใช้ตัวคั่นจุลภาค (ไม่มีช่องว่างสีขาว!)--load ระบุโปรไฟล์ความเข้มของโหลด (อัตราการมาถึง)-o ระบุชื่อของบันทึก O utput ที่มีผลลัพธ์--lua ระบุสคริปต์ l uaผู้อำนวยการจะเชื่อมต่อกับเครื่องกำเนิดโหลดส่งโปรไฟล์ความเข้มโหลดสคริปต์และการตั้งค่าอื่น ๆ จากนั้นจะแจ้งให้คุณกด ENTER เพื่อเริ่มการทดสอบ เมื่อการทดสอบได้ข้อสรุปไฟล์บันทึกเอาต์พุตจะปรากฏในไดเรกทอรี
เนื่องจากคุณไม่ต้องการเรียกใช้โปรไฟล์ตัวอย่างของเราเสมอคุณสามารถระบุของคุณเองได้ เราระบุความเข้มของโหลด (อัตราการมาถึง) และคำขอแยกต่างหากในไฟล์แยกต่างหาก
วิธีที่ง่ายที่สุดในการสร้างโปรไฟล์ความเข้มโหลดคือการใช้เครื่องมือ Limbo Limbo เป็นปลั๊กอิน Eclipse สำหรับการสร้างแบบจำลองอัตราการมาถึง คุณสามารถจำลองอัตราการมาถึงโดยใช้ตัวแก้ไขกราฟิกแล้วส่งออกไปยังรูปแบบต่างๆ เครื่องกำเนิดโหลด HTTP รองรับสองรูปแบบเหล่านั้น:
หากต้องการรับไฟล์ของรูปแบบนี้ให้คลิกขวาที่ไฟล์. DLIM รุ่นใน Eclipse Package Explorer จากนั้นเลือก สร้างการประทับเวลา บทสนทนาที่มีตัวเลือกการส่งออกปรากฏขึ้นและตัวเลือกที่รองรับทั้งสองของเราควรอยู่ในหมู่พวกเขา ในกล่องโต้ตอบต่อไปนี้คุณจะได้เลือกช่วงเวลาการสุ่มตัวอย่างนี่คือช่วงเวลาที่ตัวอย่างอัตราการมาถึงของอัตราการมาถึงและยังเป็นช่วงเวลาที่เครื่องกำเนิดโหลด HTTP ปรับอัตราการมาถึงและรายงานผล สามารถกำหนดค่าได้อย่างอิสระ แต่แนะนำให้ใช้ช่วงเวลา 1
หากคุณไม่ต้องการใช้ Limbo (คุณควร) คุณสามารถเพิ่มอัตราการมาถึงด้วยตนเอง รูปแบบของไฟล์เป็นรูปแบบ CSV แบบง่ายโดยคอลัมน์แรกคือการประทับเวลากลางของแต่ละช่วงเวลาการกำหนดเวลาและคอลัมน์ที่สองคือความเข้มของโหลด ช่วงเวลาจะต้องมีขั้นตอนเดียวกันเสมอ (เช่นเพิ่มขึ้นเสมอ 1) และคุณอาจไม่ข้ามอะไรเลย!
ตัวอย่าง:
0.5,10
1.5,20
2.5,30
โปรดทราบว่าการประทับเวลาเป็นช่วงกลางของช่วงเวลาเสมอ หมายความว่ามันคือ 0.5, 1.5, ... แทนที่จะเป็น 0, 1, ... นี่คือความเข้ากันได้กับ Limbo ซึ่งการตัดสินใจออกแบบนี้เหมาะสมกว่า แนะนำให้ใช้ช่วงเวลาที่มีระยะเวลา 1 วินาที (0.5, 1.5, 2.5, ... )
มีการระบุคำขอโดยใช้สคริปต์ LUA เราขอแนะนำให้แก้ไขตัวอย่างหนึ่งเช่นตัวอย่างน้อยที่สุดหรือตัวอย่างร้านค้า Dell DVD ตัวอย่างมีคำอธิบายในความคิดเห็นของรหัส
ฟังก์ชั่น LUA สองฟังก์ชั่นในสคริปต์ถูกเรียกจากตัวสร้างโหลด HTTP:
คุณสามารถแยกวิเคราะห์การตอบสนอง HTTP ในฟังก์ชัน OnCall โดยใช้นิพจน์ทั่วไป เรามีฟังก์ชั่น HTML Helper (พิจารณาการตอบสนองมักจะเป็น HTML) โดยเฉพาะเราเสนอ:
โปรดทราบว่าการแสดงออกปกติทั้งหมดจะถูกส่งโดยตรงไปยังแบ็กเอนด์ Java พวกเขาจะต้องระบุราวกับว่าพวกเขาระบุโดยตรงในรหัส Java เช่นใช้ "\" แทนที่จะเป็น "" เดียว
URL ที่ส่งคืนโดย OnCall เรียกว่าโดยใช้ HTTP GET หากต้องการส่งคำขอโพสต์ HTTP ให้เตรียม [โพสต์] (รวมถึงวงเล็บ) ก่อน URL ที่ส่งคืน
คุณสามารถทดสอบสคริปต์ LUA ของคุณโดยใช้ตัวทดสอบสคริปต์ HTTP ของเรา (ดาวน์โหลดไบนารีที่นี่) ตัวทดสอบสคริปต์ HTTP เป็นแอปพลิเคชั่นกราฟิกที่เรียกใช้สคริปต์และแสดงการตอบสนอง HTML ในมุมมองเว็บกราฟิกเพื่อตรวจสอบฟังก์ชั่นที่ถูกต้องของสคริปต์ Lauch ผู้ทดสอบสคริปต์โดยใช้ส่วนต่อประสานกราฟิกผู้ใช้ของคุณหรือใช้บรรทัดคำสั่งต่อไปนี้:
$ java -jar httpscripttester.jar ./MYSCRIPTFILE.lua
เราขอแนะนำบรรทัดคำสั่ง Lauch เนื่องจากบรรทัดคำสั่งในพื้นหลังจะแสดงข้อผิดพลาดที่อาจเกิดขึ้นและคำสั่ง พิมพ์ Lua ซึ่งมีประโยชน์มากเมื่อทำการดีบัก
เครื่องกำเนิดโหลด HTTP รองรับการเชื่อมต่อกับ Daemons เครื่องวิเคราะห์พลังงาน แนวคิดทั่วไปที่อยู่เบื้องหลังโครงสร้างพื้นฐานคือการเชื่อมต่อกับ daemon เครือข่ายที่อาจทำงานบนเครื่องแยกต่างหากด้วยเครื่องวิเคราะห์พลังงาน น่าเสียดายที่ Daemons เครื่องวิเคราะห์พลังงานส่วนใหญ่เช่น Spec Ptdaemon มีใบอนุญาตที่เข้มงวดโดยห้ามมิให้ใช้กับเครื่องกำเนิดโหลด HTTP หรือป้องกันไม่ให้เรามอบให้คุณ
เราให้บริการอินเทอร์เฟ ซ ipowerCommunicator ใน tools.descartes.dlim.httploadgenerator.power ใช้ Power Daemon Communicator ของคุณเองกับอินเทอร์เฟซนี้ Hiokicommunicator เป็นการใช้งานอ้างอิงที่ใช้งานได้ซึ่งรองรับอุปกรณ์การวัดพลังงาน Hioki ที่มีอีเธอร์เน็ต TMCTLDCommunicator สามารถใช้เป็นตัวอย่างเพิ่มเติมได้
ในการเริ่มต้นเครื่องกำเนิดโหลด HTTP ด้วย Power Communicator ของคุณให้เพิ่มลงใน classPath จากนั้นระบุชื่อคลาสที่ถูกปั่นป่วนอย่างสมบูรณ์ของ Communicator ของคุณโดยใช้สวิตช์ -C ของตัวสร้างโหลด HTTP ในโหมดผู้กำกับ ใช้สวิตช์ -P เพื่อระบุที่อยู่เครือข่ายของ Power Daemon ของคุณ คุณสามารถป้อนที่อยู่ที่คั่นด้วยเครื่องหมายจุลภาคหลายตัว หากคุณทำเช่นนั้นผู้อำนวยการจะสร้างอินสแตนซ์ Power Communicator สำหรับแต่ละที่อยู่เหล่านั้นและบันทึกผลลัพธ์ในคอลัมน์แยกต่างหาก
ตัวอย่าง (ด้วย Power Communicator ที่รวบรวมไว้ใน 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
ตัวอย่าง (ด้วย Power Communicator ที่รวบรวมไว้ในขวดแยกต่างหาก):
$ 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.
เรียกใช้ 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โปรด Condider อ้างถึงเราหากคุณใช้ HTTP Load Generator ในงานของคุณ:
@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},
}