Unduh biner di sini. Juga, pertimbangkan untuk mengutip kami.
Generator beban HTTP adalah generator beban yang dirancang untuk menghasilkan beban HTTP dengan berbagai intensitas beban. Ini menggunakan spesifikasi intensitas beban seperti yang ditentukan oleh limbo untuk menghasilkan beban yang bervariasi dalam intensitas (jumlah permintaan per detik) dari waktu ke waktu. Load Generator Log Data Level Aplikasi dan Mendukung Menghubungkan ke Daemon Pengukuran Daya Eksternal. Ini menentukan permintaan HTTP sendiri menggunakan skrip LUA, yang dibaca saat run-time.
Alat Generator Beban HTTP dapat dijalankan dalam dua mode: sebagai Direktur dan sebagai Generator Beban. Mode Direktur memulai alat dalam mode di mana ia mem -parsing profil dan skrip yang diperlukan, terhubung ke perangkat pengukuran daya, dan mengumpulkan data. Mode Load Generator menerima instruksi dari Direktur dan menghasilkan permintaan yang sebenarnya. Mode diatur menggunakan sakelar baris perintah, yang berarti bahwa setidaknya dua contoh generator beban HTTP harus berjalan untuk pengujian, satu di setiap mode. HTTP Load Generator juga mendukung pembuatan beban multi-node, di mana satu direktur terhubung ke beberapa contoh yang berjalan dalam mode Load Generator.
Struktur Readme ini:
Generator beban memiliki tiga fitur utama berikut:
Generator beban dapat digunakan untuk pengujian aplikasi web mengenai pengujian efisiensi energi, pengujian perilaku penskalaan dari waktu ke waktu, dan pengujian skenario yang tergantung waktu, seperti efek semburan mendadak, variasi musiman dalam pola permintaan, tren, dll.
Pertama -tama buat atau unduh httploadgenetor.jar. Menyebarkan httploadgenerator pada dua mesin:
Selain toples, Anda memerlukan profil intensitas beban dan skrip LUA untuk menghasilkan permintaan yang sebenarnya. Kami memberikan contoh untuk masing -masing di Direktori Contoh Files:
Unduh kedua file dan letakkan di mesin sutradara. Untuk kesederhanaan, kami akan menganggap bahwa Anda menempatkannya di direktori yang sama dengan httploadgenerator.jar . Anda sekarang juga akan memodifikasi skrip LUA dengan panggilan untuk aplikasi web Anda. Untuk contoh minimal, pastikan saja bahwa index.html dan index.htm dapat diakses dan masukkan alamat server Anda yang menampung aplikasi web dalam baris 7 skrip.
Sekarang, pada mesin generator beban, mulailah generator beban HTTP dalam mode Load Generator, menggunakan baris perintah berikut dengan sakelar -l . Jika Anda menggunakan beberapa mesin generator beban, lakukan ini pada masing -masing:
$ java -jar httploadgenerator.jar loadgenerator
Selanjutnya, pada mesin sutradara mulai generator beban http dalam mode sutradara:
$ java -jar httploadgenerator.jar director --ip IP_OF_THE_LOAD_GENERATOR_MACHINE --load curveArrivalRates.csv -o testlog.csv --lua http_calls_minimal.lua
Panggilan sutradara melakukan hal berikut:
director Memulai Mode Direktur.--ip Menentukan alamat mesin generator beban. Untuk beberapa generator beban, gunakan pembatas koma (tidak ada ruang putih!).--load menentukan profil intensitas beban (tingkat kedatangan).-o Menentukan nama log o utput, yang berisi hasilnya.--lua Menentukan skrip L ua.Direktur sekarang akan terhubung dengan generator beban, mengirim profil intensitas beban, skrip, dan pengaturan lainnya. Ini kemudian akan meminta Anda untuk menekan ENTER untuk memulai tes. Setelah tes selesai, file log output akan muncul di direktori.
Karena Anda tidak selalu ingin menjalankan profil contoh kami, Anda dapat menentukan sendiri. Kami menentukan intensitas beban (tingkat kedatangan) dan permintaan secara terpisah dalam file terpisah.
Cara termudah untuk membuat profil intensitas beban adalah menggunakan alat limbo. Limbo adalah plugin Eclipse untuk memodelkan tingkat kedatangan. Anda dapat memodelkan tingkat kedatangan menggunakan editor grafis dan kemudian mengekspornya ke berbagai format. HTTP Load Generator mendukung dua format tersebut:
Untuk mendapatkan file dari format ini, klik kanan pada file model .Dlim di Eclipse Package Explorer, lalu pilih Hasilkan Perangko Waktu . Dialog dengan opsi ekspor muncul dan dua opsi kami yang didukung harus ada di antara mereka. Dalam dialog berikut, Anda dapat memilih interval pengambilan sampel, ini adalah interval di mana limbo sampel tingkat kedatangan dan juga interval di mana generator beban HTTP menyesuaikan kembali tingkat kedatangan dan melaporkan hasil. Ini dapat dikonfigurasi secara bebas, tetapi interval 1 direkomendasikan.
Jika Anda tidak ingin menggunakan limbo (Anda harus, meskipun) Anda juga dapat memacu tingkat kedatangan secara manual. Format file adalah format CSV sederhana dengan kolom pertama menjadi cap setengah waktu dari setiap interval penjadwalan dan kolom kedua menjadi intensitas beban. Interval harus selalu memiliki langkah yang sama (mis. Selalu bertambah dengan 1) dan Anda tidak boleh melewatkannya!
Contoh:
0.5,10
1.5,20
2.5,30
Perhatikan, bahwa cap waktu selalu merupakan pertengahan interval. Artinya itu adalah 0,5, 1,5, ... bukannya 0, 1, ... Ini untuk kompatibilitas dengan limbo, di mana keputusan desain ini lebih masuk akal. Sekali lagi, interval dengan periode 1 detik (0,5, 1,5, 2,5, ...) direkomendasikan.
Permintaan ditentukan menggunakan skrip LUA. Kami merekomendasikan memodifikasi salah satu contoh, seperti contoh minimal atau contoh toko Dell DVD. Contohnya berisi penjelasan dalam komentar kode mereka.
Dua fungsi LUA dalam skrip dipanggil dari HTTP Load Generator:
Anda dapat mengurai respons HTTP dalam fungsi Oncall menggunakan ekspresi reguler. Kami menyediakan fungsi helper HTML (mengingat responsnya biasanya HTML). Secara khusus, kami menawarkan:
Perhatikan bahwa semua ekspresi reguler diteruskan langsung ke backend Java. Mereka harus ditentukan, seolah -olah mereka ditentukan secara langsung dalam kode Java. Yaitu, gunakan "\" bukannya satu "".
URL yang dikembalikan oleh Oncall dipanggil menggunakan HTTP GET. Untuk mengirim permintaan HTTP POST, prepend [pos] (termasuk kurung) sebelum URL yang dikembalikan.
Anda dapat menguji skrip LUA Anda menggunakan HTTP Script Tester kami (unduh biner di sini). HTTP Script Tester adalah aplikasi grafis yang menjalankan skrip dan membuat respons HTML dalam tampilan web grafis untuk memeriksa fungsionalitas skrip yang benar. Lauch The Script Tester Menggunakan Antarmuka Pengguna Grafis Anda atau Menggunakan Baris Perintah berikut:
$ java -jar httpscripttester.jar ./MYSCRIPTFILE.lua
Kami merekomendasikan baris perintah lauch, karena baris perintah di latar belakang akan menunjukkan kesalahan potensial dan pernyataan cetak Lua, yang sangat membantu saat debugging.
HTTP Load Generator mendukung penghubung ke DAEMON PENGHARGAAN DAYA. Gagasan umum di balik infrastruktur adalah untuk terhubung ke daemon jaringan yang dapat berjalan pada mesin terpisah dengan penganalisa daya. Sayangnya, sebagian besar penganalisa daya daemon, seperti spec ptdaemon, memiliki lisensi yang membatasi, melarang penggunaannya dengan generator beban HTTP atau mencegah kami memberikannya kepada Anda.
Kami menyediakan antarmuka IpowerCommunicator di alat.descartes.dlim.httploadgenerator.power Paket. Terapkan komunikator Daemon Power Anda sendiri terhadap antarmuka ini. Hiokicommunicator adalah implementasi referensi yang berfungsi yang mendukung perangkat pengukuran daya hioki yang berkemampuan Ethernet. TMCTLDCommunicator dapat digunakan sebagai contoh implementasi lebih lanjut.
Untuk memulai generator beban HTTP dengan komunikator daya Anda, tambahkan ke ClassPath dan kemudian tentukan nama kelas yang penuh Quailified dari komunikator Anda menggunakan saklar -c dari generator beban HTTP dalam mode Direktur. Gunakan sakelar -p untuk menentukan alamat jaringan Daemon Power Anda. Anda dapat memasukkan beberapa alamat yang terpisah koma. Jika Anda melakukannya, Direktur akan membuat instantiate Power Communicator untuk masing -masing alamat tersebut dan mencatat hasilnya di kolom terpisah.
Contoh (dengan komunikator daya yang dikompilasi ke dalam 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
Contoh (dengan komunikator kekuatan yang dikompilasi ke dalam toples terpisah):
$ 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
Gunakan sakelar -h untuk menampilkan halaman bantuan:
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.
Jalankan java -jar httploadgenerator.jar director -h untuk halaman bantuan sutradara:
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
Contoh Tambahan:
$ 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
Hasil ditulis ke file CSV output. Mereka berisi metrik berikut untuk setiap interval waktu:
-u, --timout .Tolong Condider mengutip kami jika Anda menggunakan generator beban HTTP dalam pekerjaan Anda:
@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},
}