--- title: Lab Meeting Minutes 2022/5/20 tags: lab_meeting --- > Outline > [TOC] --- # PERAL Lab Meeting - 時間:111 年 5 月 20 日 10:00 - 地點:科三 321 - 出席者:吳坤熹老師(remote)、謝萬霖(remote)、周以恆(remote)、吳騰然、劉怡君、田蕙瑜、洪胤勛、丘世宇(remote)、莊才賢 - 會議主題: [k6](https://ms15.voip.edu.tw/~branko/lab_meeting/k6-v2.pptx) HTTP Load Testing - 主講者: 洪胤勛 - 主記: 莊才賢 ## 會議內容 ### Intro K6 是一個壓測工具,about web,可以定義 certificate、cookies ### running - 兩種測試方式 - 直接透過 command 帶入參數 - 透過 js 腳本 - 像是透過 js 去定義測試行為,不是依賴 node js - 幾個 component - virtual user(socket.io) 進行 request,跑得時候是平行的 - export function - export main function(定義一個 user request 一次的行為,會一直 loop) - report generator - into log collector - Grafana - Prometheus - into files - csv ### Demo - `ssh <name>@<name>.lab.test.ncnu.org` - `wget -O http://ms15.voip.edu.tw/~branko/lab_meeting/install.sh | sh` - - demo1 - `wget http://ms15.voip.edu.tw/~branko/lab_meeting/demo1.js` - request 到一個 URL - `k6 run demo1.js` - `--vus`: 幾個 virtual user 進行 request - `k6 run --vus 10 --duration 30s demo1.js` - demo2 - http://ms15.voip.edu.tw/~branko/lab_meeting/demo2.js - `wget http://ms15.voip.edu.tw/~branko/lab_meeting/demo2.js ` - `k6 run demo2.js` - demo3 - `wget http://ms15.voip.edu.tw/~branko/lab_meeting/demo3.js` - 可以分階段去做壓測,前 10 秒線性增加到 10 個 virutal user,之後 10 秒在線性增加到 30 個 virtual user,最後再跳回 10 個 virual user - `wget http://ms15.voip.edu.tw/~branko/lab_meeting/demo3.js` - `k6 run demo3.js` - output with file - `k6 run --out json=test.json demo3.js` - `k6 run --out json=test.json --out csv=test.csv demo2.js ` - integrate with grafana (Web GUI output) - `k6 run --out influxdb=http://localhost:8086/k6db demo3.js` - http://IP:3000 - add data source, local influxdb - configuration > data source > add data source - fill in db url, which database - add a dashboard - dashboard > browser > add a new panel - P.15 這邊填的 "k6db" 就是 P.12 "http://localhost:8086/k6db" InfluxDB (Time-Series Database) 裡頭的資料庫名稱 ### 問題 - If you see the error message "Too many open files", this is caused by io limit - `ulimit -a # show the current limit of open files` (default: -n 1024) - `ulimit -n 25000` - Note: This only applies to the current shell. ### 建議&問題 1. virtual user 是代表總共有幾個 connection [name=edgar] Ans: http response 無法決定傳多久,傳完就結束 他是在 30 秒內一直跑同樣內容[name=Branko] 2. 在實驗室打算做啥 [name=edgar] Ans: 測試 API gateway 3. 既然要測試 API gateway,需要注意的參數有哪些,注意控制變因(哪個 performance 的 metric). You should read more papers. It's obvious that you did not even read Henry's paper. Ans: 針對 load test, stress testing 去做 test [name=Branko] 4. 剛剛 demo 遇到的 file descriptor,你只調了 soft limit. Did you check its hard limit(`ulimit -Sa`)? [name=Henry] 5. 壓力測試怎樣算過了?如何從報表知道是否測試通過? 會不會注意到 request fail 的選項? [name=chofinn] Ans: request duration 時間會不會延長,假設一堆人來一直送 requset ,就觀察 request time 7. Can k6 only handle simple HTTP request/response, or can it also run JavaScript (e.g. V8 engine) to support webrtc test? [name=Jerry] > 若是平時測試時都 disable js ,跟現實連接的狀況不同,請找找支援 js 的壓力測試 framework > [name=solomon] 8. 關於 demo 在測試 15000 時會失敗,兩次顯示的 error message 不同,這些 error message 有地方可以看說為什麼失敗嗎 [name=Angela] Ans: 紀錄在 influxdb 裡面只會存出現 error ,但沒有 error message 9. 是同個 IP 發出去的嗎 [name=Toby] Ans: 都是從 local ,那台 host 利用 socket 做連線. 這是 open source 版。他們也有提供 [K6 Cloud](https://k6.io/cloud/) 的服務,要收費。 10. 平行的定義?是同時還是一個一個 [name=Toby] Ans: 就是像 multithread 那樣 11. 壓力測試透過 local 端會不會被擋掉?遇到這種問題有什麼解決方法嗎? Ans: 不關防火牆的情況下應該沒辦法。maybe 加白名單 12. 第六頁直接講 grafana 可能對沒接觸過得人不友善,選擇用 grafana 是有什麼特殊的原因嗎? Ans: 它 document 推薦,沒試過 data log? ## 待追蹤事項 1. [name=chofinn] wiki.js 架設 Chofinn: 我不知道接下來我要做什麼。 Solomon: 若服務已架好,當然接下來就是找兩個 beta testers, 測完沒什麼大問題就開放全實驗室試用。 ## 臨時動議 1. [name=] --- 散會結束時間:11:20