docker搭建圖片壓測QPS3000+服務器(ftp+nginx)
- 在針對圖片算法服務進行壓力測試時,需要高性能的圖片服務器
- 自己編寫的圖片應用性能不一定能達到要求
- 可能因為圖片應用自身達不到壓測要求,影響算法服務的壓測數據
準備工作
需要在服務器先安裝好docker,性能結果看文章結尾
步驟
- 參數
| 項目 | key | value |
|---|---|---|
| 地址 | IP | 192.168.0.2 |
| ftp用户名 | FTP_USERNAME | ftpuser |
| ftp密碼 | FTP_PASSWORD | abc@123 |
| 宿主機保存目錄 | FTP_PATH | /var/ftp |
| ftp地址 | FTP_URL | ftp://192.168.0.2/ |
| 圖片請求地址 | PHOTO_URL | http://192.168.0.2/ftpuser/** |
- shell中設置變量(根據自己的實際參數去設置)
export IP=192.168.0.2 # 服務器ip
export FTP_USERNAME=ftpuser # ftp賬號
export FTP_PASSWORD=abc@123 # ftp密碼
export FTP_PATH=/var/ftp # 圖片上傳根目錄
export FTP_DOCKER_NAME=ftp # ftp容器名稱
export NGINX_DOCKER_NAME=nginx # nginx容器名稱
安裝ftp
- 創建文件目錄
mkdir ${FTP_PATH}
- 啓動容器
docker pull fauria/vsftpd
docker run -d \
--name ${FTP_DOCKER_NAME} \
--restart=always \
-p 20:20 \
-p 21:21 \
-p 21100-21110:21100-21110 \
-v ${FTP_PATH}:/home/vsftpd \
-e FTP_USER=${FTP_USERNAME} \
-e FTP_PASS=${FTP_PASSWORD} \
-e PASV_ADDRESS=${IP} \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21110 \
fauria/vsftpd
安裝nginx
容器啓動命令
docker pull nginx:latest
docker run -d \
--name ${NGINX_DOCKER_NAME} \
--restart=always \
-p 80:80 \
-v ${FTP_PATH}/${FTP_USERNAME}:/usr/share/nginx/html/${FTP_USERNAME} \
nginx:latest
重要配置!(nginx)
- 通過ftp上傳的圖片,訪問會報403無權限錯誤
進入nginx容器,打開/etc/nginx/nginx.conf文件
將
user nginx;
改為
user root;
重啓nginx容器
使用
-
打開文件資源管理器,地址欄輸入ftp地址,輸入賬號密碼,即可上傳圖片
ftp://${IP}/ # 即 ftp://192.168.0.2/ -
在瀏覽器中輸入網頁地址,,即可獲取到圖片
http://${IP}/${FTP_USERNAME}/${對應圖片路徑} # 即 http://192.168.0.2/ftpuser/${對應圖片路徑}
性能
使用測試jmeter進行壓力測試,返回200狀態碼判定為成功。
圖片上傳了1000張圖片,循環獲取持續3分鐘
服務器配置
| 項目 | 配置 |
|---|---|
| 系統 | Ubuntu22.04 |
| CPU | 4核 |
| 內存 | 8G |
| 硬盤 | 120G |
| 網絡 | 萬兆內網 |
| 軟件 | 新系統系統,僅安裝docker |
Jmeter、圖片參數
| 項目 | 值 |
|---|---|
| 線程數 | 1000 |
| 時長 | 180s(3min) |
| 圖片分辨率 | 640*352 |
| 圖片平均大小 | 30 - 40 kb/張 |
Jmeter結果
由於是單個請求,QPS=TPS=3257.8/sec
該壓測過程中,運行Jmeter的電腦CPU 100%,所以可能是運行電腦性能問題降低了壓測結果,所以該結果僅供參考
Jmeter原始報告如下:
| Label | Sample | Average | Min | Max | std.Dev. | Error% | Throughput | Received KB/sec | Sent KB/sec | Avg. Bytes |
|---|---|---|---|---|---|---|---|---|---|---|
| TOTAL | 591303 | 302 | 1 | 70716 | 341.85 | 0.00% | 3257.8/sec | 102582.08 | 555.42 | 32243.4 |
服務器參數
以下統計使用MobaXterm軟件連接工具數值,非專業工具,僅供參考
| 項目 | 狀態 | 數值 |
|---|---|---|
| CPU | 壓測前 | 0% |
| CPU | 壓測中 | 40% - 70% |
| 內存 | 壓測前 | 0.76G |
| 內存 | 壓測中 | 0.77G |
| 總內存 | - | 7.75G |
| Upload | 壓測前 | 0.01 Mb/s |
| Upload | 壓測中 | 965.55 Mb/s |
| Download | 壓測前 | 0.01 Mb/s |
| Download | 壓測中 | 1871.02 Mb/s |
總結
該方式搭建的圖片服務器可以滿足大部分壓測場景,服務器CPU資源要求很高,內存資源要求低。