[Jmeter]平常工做中踩的坑

  1. [JMeter] Error in rconfigure() method java.rmi.ConnectException:Connection refused to host

問題分析:拋出的問題中,提示Java遠程調用方法出現了異常,鏈接拒絕了master,多是主機與奴隸機通訊失去了聯繫php

解決辦法:嘗試把主機的 jmeter-server 與 奴隸機的 jmeter-server給重啓下java


  1. [Jmeter] Non HTTP response code: java.net.NoRouteToHostException/Non HTTP response message: Cannot assign requested address (Address not available)

背景:多線程條件壓測mysql

問題分析:看文字介紹說:不可以分配請求地址,可能端口已經佔用了,致使地址不可用linux

解決辦法:經網上查資料, 是因爲linux分配的客戶端鏈接端口用盡, 沒法創建socket鏈接所致,雖然socket正常關閉,可是端口不是當即釋放, 而是處於TIME_WAIT狀態, 默認等待60s後才釋放。 查看linux支持的客戶端鏈接端口範圍, 也就是28232個端口:git

cat  /proc/sys/net/ipv4/ip_local_port_range
32768 - 61000

解決方法: 1. 調低端口釋放後的等待時間, 默認爲60s, 修改成15~30s echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout 2. 修改tcp/ip協議配置, 經過配置/proc/sys/net/ipv4/tcp_tw_resue, 默認爲0, 修改成1, 釋放TIME_WAIT端口給新鏈接使用。 echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse 3. 修改tcp/ip協議配置,快速回收socket資源, 默認爲0, 修改成1. echo 1 > /proc/sys/net/ipv4/tcp_tw_recyclegithub

經過上面3項調整, 壓力測試運行正常。sql


3.[Jmeter] 502/Bad Gatewayapache

背景:多線程或者高併發下壓測狀況下數組

問題分析:多是多線程請求的狀況下,達到了ng配置的最大鏈接數,致使出現了502/bad geteway緩存

解決辦法:下降線程數進行測試(實際須要與開發溝通,該接口與實際業務的最大處理能力)


4.[Jmeter] Test failed: text expected to contain /200/

解決辦法:檢查斷言


5.[Jmeter] java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z

解決辦法:mysql.jdbc驅動包版本太低,更新mysql驅動包便可,注意:此包在lib下,而不是lib/ext下


6.[Jmeter] com.jcraft.jsch.JSchException: SSH_MSG_DISCONNECT: 2 Too many authentication failures

背景:利用key進行ssh鏈接服務器的時候,沒法鏈接上服務器的狀況

問題分析:多是JSchException這個插件的問題,通過測試,發現一旦用key鏈接數到達必定量時,就一定會報錯

解決辦法:重啓Jmeter,從新鏈接下就行了(可能插件存在缺陷)


7.[Jmeter] ERROR o.a.j.e.ClientJMeterEngine: Error in rconfigure() method java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample (no security manager: RMI class loader disabled)

背景:Jmeter分佈式測試

問題分析:進行分佈式測試的時候,主機沒法啓動奴隸機

解決辦法:經排查,是節點機缺乏dubbo插件的緣由,把插件放上去,重啓下奴隸機的jmeter-server便可


8.[Jmeter]CannotResolveClassException: kg.apc.jmeter.vizualizers.CorrectedResultCollector

在jenkins上用maven方式壓測的時候,提示沒法加載這個類

問題分析:檢查jmx文件,發現新增的插件在maven環境中沒有

解決辦法:要麼把這個插件注入到maven倉庫中,要麼在jmx中刪除這個插件,注意:必定要刪除,而不是隱藏

9.[Jmeter]Engine is busy - please try later(引擎忙,請稍候再試)

背景:運行分佈式測試時報錯

問題分析:多是主機與奴隸機的信息通訊出了問題

解決辦法:重啓奴隸機與宿主機的jmeter-server服務(重啓服務後,記得重啓Jmeter.bat)

10.[Jmeter]if控制器判斷接口沒法識別

問題分析:if控制器只接收兩個結果,true or false,多是返回的結果不爲true or false

解決辦法:利用Jmeter函數處理結果

好比:
${__groovy(1==1,)} -------->返回true
${__groovy(1==2,)} -------->返回false

11.[Jmeter]missing class com.thoughtworks.xstream.converters.ConversionException:

背景:在執行jmeter jmx文件的時候,報錯

問題分析:多是缺乏了某個jar包

解決辦法:檢查下腳本所用的到jar包是否存在於jmeter lib或者lib/ext中

12.[Jmeter]java.lang.ArrayIndexOutOfBoundsException: 0

背景: 運行jmeter jmx任務的時候,直接報錯

問題分析:數組索引越界異常

解決辦法:賊坑,通過baidu,bing等多方面查詢無果,看到日誌中貌似有什麼範圍超限了,覺得是Jmeter工具備內存緩存什麼的,或者對這個jmeter腳本有緩存記錄。最後只能把腳本部份內容複製並從新建立了一個腳本,運行後發現一切正常。趕忙翻看原來的腳本,發現了一個特別蛋疼的事情,不知道何時手誤,把【測試計劃】給註釋了。尼瑪,坑的我老淚縱橫

13.[jmeter]Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/home/bjqa/apache-jmeter-3.0/bin/../project/realnameauthINFTest/RNA_INFtest.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: kg.apc.jmeter.vizualizers.CorrectedResultCollector : kg.apc.jmeter.vizualizers.CorrectedResultCollector ---- Debugging information ----

問題分析:這個多是因爲當前jmeter運行環境中缺乏jar包致使的

解決辦法:測試計劃的腳本儘可能版本保持一致,或者添加對應的插件(好比:測試時用的腳本版本是5.1.1,那麼在其餘環境下運行的Jmeter腳本也儘可能使用5.1.1)

14.[Jmeter]執行perfmon控制器監控jmx的時候,服務端代理日誌(ServerAgent報錯:java.lang.RuntimeException: Invalid metric specified: jmx)

解決辦法:參考https://blog.csdn.net/warm77/article/details/80534625

http://bbs.51testing.com/forum.php?mod=viewthread&tid=1020124&ordertype=1

先在服務機對應的tomcat配置文件中新增JAVA -D 參數 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099

相關文章
相關標籤/搜索