模擬io操作boot項目 寫一個get請求的接口,http 請求一次會復制一次文件到指定文件夾打包成jar 在服務器執行jar包nohup java -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=128m -server -Dserver.port=8087 -jar zctest.jar 'cztest' –spring.profiles.active=dev >>./test_info_8099.log 2>&1 &nohup :不掛斷地運行命令用於在系統後臺不掛斷地運行命令,退出終端不會影響程序的運行java -jar: 執行jar包-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m 指定運行內存-server -Dserver.port=8087 指定運行端口–spring.profiles.active=dev 使用對應配置文件>>./test_info_8099.log 生成日志2>&1 & 輸入/輸出重定向日志文件中& 符號是把該命令以後臺的job的形式運行啟動服務成功使用jmeter並發請求接口vmstat 2 發現io的bo值,有明顯的數據 ====== 有大量的寫磁盤操作mpstat -P ALL 2 看到 wKB/S 有非常大的數據, 現在的磁盤 有大量的寫操作mpstat -P ALL 2 2 秒獲取一次所有的監控數據未壓測接口前 top的指標壓測接口後 top的指標 負載開始增加計算機網絡常用的網絡都是基於 tcp、ip協議的基礎運作,http協議隻是其中的一種。TCP協議:通過數據發送者和接收者相互回應對方發來的確認信息,可靠的進行數據傳輸IP協議:指定數據發送的IP信息,以及通過路由轉發數據IP數據包= tcp + ip + 幀頭\幀尾tcp三次握手 初次見面,握手(你好,你好,你好),確保數據100%準確到達TCP 組成 : 源地址、源端口、目的地址、目的端口源地址:發起方的地址(ip)肯定唯一,但可能不固定源端口:發起通信的端口每一次通信,都要占用1個端口目的地址: 接收方(服務)的地址(ip)目的端口: 接收方(服務)的端口端口開啟時,發送方會分配一個端口,數據從端口出去,進入網絡端口關閉時,端口開啟時間到瞭,會關閉端口一個電腦最多: 65535個端口1- 1023 公認端口 21 ftp 、22ssh 、25 SMTP、80 http、443 https1024-49151 註冊端口 8080 9800 300049152~65535 私有端口 約16800個端口 默認可以使用這麼多上述這些端口對於普通用戶使用,完全沒有問題,但是,性能測試,就可能會有問題在性能測試中,在發起方1臺機器上,短時間,發起大量請求,占用大量端口會導致: 端門不夠用 Address already in use: connect優化方法:擴大端口范圍: 1024 ~ 65535 達到6.4w端口讓端口占用的時長縮短: 去掉keepalive查看占用的端口數linux:netstat -ano | grep "TCP" | wc -lwin:netstat -ano | find "TCP" /i /c —/i 不匹配大小寫 –/c 統計若發起方機器,這個命令統計後的數值為約1.4w,則你本地端口成為性能瓶頸tcp udp 區別 相同點:tcp和udp都是傳輸層協議 不同點:udp 無連接協議,大小有限制,速度快,不靠協議,易丟失 tcp 面向連接協議,故需要三次握手 所以安全,應用廣泛,可用來下載,瀏覽網頁接口50個並發持續壓測 300s並發場景下出現瞭端口被占用的錯誤鏈接不到被測試服務器,是因為被測服務器問題導致當前win的tcp端口數量調優方式:win 發起時修改請求方式:去掉keepalive 延遲報錯時間修改win設備註冊表:修改註冊表:計算機\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters添加 MaxUserPort 十進制 65534添加TcpTimedWaitDelay 十進制 30重啟系統linux發起請求時查看當前linux設備的ipv4 端口:sysctl -a |grep net.ipv4.ip_local_port_range修改端口范圍:sysctl -w net.ipv4.ip_local_port_range="1024 65534"生效 sysctl -p修改過後ip端口可以達到 6.4w個端口使用ulimit -a` 查看所有的限制`ulimit -n` open files 打看文件數量限制 默認1024. 某一個應用程序,最多可以打開的文件數量臨時修改文件 : ulimit -選項參數 配置值 ulimit -n 2048 將打開文件數變為2048具體參數的含義持久化\永久性的修改: vim /etc/security/limits.conf一般配置這兩個參數:nofile文件,nproc進程*代表任何用戶修改limits文件後reboot重啟配置項已經修改帶寬問題的判斷方式:根據吞吐量和網絡帶寬計算網絡是否有瓶頸通過ping 服務器查看是否丟包和 未壓測前的時間與在進行壓測時的,時間之間有沒有明顯的差異通過檢查系統配置是否成為瓶頸看具體某個進程運行打開的文件數量cat /proc/PID/limits可以通過 ulimit -n 修改打開文件數和 ulimit -u 最大並發線程數cat /proc/sys/fs/file-max 查看系統允許打開的最大文件數量查看某個進程當前已經打開的文件總數Isof -p PID | wc -llsof | wc -l 查看當前系統打開的總文件數量禁ping 命令 避免對服務器發起負載原始值為0通過下列命令修改為1sysctl -w net.ipv4.icmp_echo_ignore_all=1sysctl -w net.ipv4.route.flush=1配置生效sysctl -p