場景分析: 跨域:指的是瀏覽器不能執行其餘網站的腳本。它是由瀏覽器的同源策略形成的,是瀏覽器對javascript施加的安全限制。 例如:a頁面想獲取b頁面資源,若是a、b頁面的協議、域名、端口、子域名不一樣,所進行的訪問行動都是跨域的,而瀏覽器爲了安全問題通常都限制了跨域訪問,也就是不容許跨域請求資源。注意:跨域限制訪問,實際上是瀏覽器的限制。理解這一點很重要!!!javascript
未解決前方案:動態傳入固定的變量,最後讀到的始終是變量最後賦值的那個變量(好比我有8個線程組,每一個線程組都有一個相同的變量名稱,最終腳本執行的時候,只會拿到最好一次賦值的變量)java
解決後的方案:爲了防止變量衝突,把公公共的採樣器私有化,把動態變量寫死,儘可能用不一樣的ip參數來替換原來動態重複的參數git
場景分析: 無狀態服務:就是沒有特殊狀態的服務,各個請求對於服務器來講統一無差異處理,請求自身攜帶了全部服務端所須要的全部參數(服務端自身不存儲跟請求相關的任何數據,不包括數據庫存儲信息) 有狀態服務:與之相反,有狀態服務在服務端保留以前請求的信息,用以處理當前請求,好比session等sql
解決辦法:本着不修改項目代碼的前提下,僅修改http請求訪問地址爲多個ip的形式進行內網訪問(把ng域名請求拆分紅8個線程組進行服務ip請求),這樣既解決了單一負載的問題,也解決了外網帶寬上限問題數據庫
場景分析: 因本次壓測不在公司內網環境下,沒法使用svn或git的前提下,執行壓測時須要讀取執行jmx文件,故把要執行的文件所有上傳到指定的文件夾當中跨域
解決辦法: 修改pom.xml文件,把要執行的jmx腳本所在的文件夾名稱進行動態傳參(mvn clean verify -Djmx.filesDirectory.dir=${filesDirectory} -Dargs.filesDirectory.dir=${filesDirectory} -Djmeter.threadCount=${threadCount} -Djmeter.duration=${duration} -Djmeter.loopCount=${loopCount} -PLoad) <!--指定運行某個目錄下jmx文件--> <jmeter.jmx.dir>${jmx.filesDirectory.dir}</jmeter.jmx.dir> <jmeter.args.dir>${args.filesDirectory.dir}</jmeter.args.dir> <!--引用jmeter.jmx.dir進行傳值轉化指定--> <testFilesDirectory>${jmeter.jmx.dir}</testFilesDirectory>瀏覽器
場景分析: 本次壓測執行腳本沒有把easyNmon監控集成到pipeline代碼中,致使前期每次壓測都須要手工去開啓/中止監控安全
解決辦法: 利用jenkins job 把pipeline進行單獨抽離,而後經過遍歷機器ip的方式進行啓停服務器
場景分析: 3萬個員工進行調崗申請,但願崗位是動態的,那麼就須要多崗位進行隨機取值cookie
解決辦法: 方法1:利用jmeter的插件(random csv set data),能夠支持參數化文件的按行隨機取值 方法2:經過sql查詢出崗位信息後,對返回的Object用list接收,而後經過random對list的下標進行隨機取值
場景分析: 在本地下載jar包後,能正常運行,在服務器端須要注入jar包才能正常運行
解決辦法: 好比,如今要注入鏈接oracle驅動的jar包:ojdbc6.jar(目前不知道groupId,artifactId,version) 可經過訪問maven倉庫拿到:https://mvnrepository.com/artifact/com.oracle/ojdbc6/11.2.0.3 <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> <scope>test</scope> </dependency>