錯(cuò)誤匯集2

1. java.net.BindException: Address already in use: connect

開始以為是單機(jī)運(yùn)行腳本運(yùn)行不過來内狗,所以另加了一臺(tái)負(fù)載機(jī)同時(shí)運(yùn)行腳本

分布式環(huán)境部署參考:r

https://www.cnblogs.com/whitewasher/p/6946207.html


但是依然還是會(huì)報(bào)錯(cuò)匿情,后面查閱了相關(guān)資料后發(fā)現(xiàn)即寒,是因?yàn)閣indows本身提供的端口訪問機(jī)制的問題行您。

Windows XP提供給 TCP/IP鏈接的端口為 1024-5000,并且要四分鐘來循環(huán)回收他們违诗。就導(dǎo)致我們?cè)诙虝r(shí)間內(nèi)跑大量的請(qǐng)求時(shí)將端口占滿了揖膜。



解決方案為:

1.cmd中,用regedit命令打開注冊(cè)表

2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下姿锭,

  1 .右擊parameters塔鳍,添加一個(gè)新的DWORD,名字為MaxUserPort

2 .然后雙擊MaxUserPort呻此,輸入數(shù)值數(shù)據(jù)為65534轮纫,基數(shù)選擇十進(jìn)制(如果是分布式運(yùn)行的話,控制機(jī)器和負(fù)載機(jī)器都需要這樣操作哦)

3.修改配置完畢之后記得重啟機(jī)器才會(huì)生效


2.?在Windows機(jī)器上用Jmeter做性能測(cè)試焚鲜,匯總下我自身遇到的錯(cuò)誤和解決方案



java.net.BindException: Address already in use: JVM_Bind

原因分析:壓測(cè)服務(wù)器問題掌唾,由于并發(fā)太高,導(dǎo)致自身port不夠用忿磅,需要調(diào)整機(jī)器的端口糯彬,可用netstat -ano看出來;去掉下面的/c查看詳細(xì)端口占用

定位:

netstat -ano | find "10.215.70.172:443" | find "ESTABLISHED" /c

50

netstat -ano | find "10.215.70.172:443" | find "SYN" /c

netstat -ano | find "10.215.70.172:443" | find "TIME_WAIT" /c

2233

解決方案:

cmd中葱她,用regedit命令打開注冊(cè)表;在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下撩扒,?1)右擊parameters,添加一個(gè)新的DWORD/QWORD吨些,名字為MaxUserPort?2)然后雙擊MaxUserPort搓谆,輸入數(shù)值數(shù)據(jù)為65534炒辉,基數(shù)選擇十進(jìn)制,重啟電腦生效

Nginx: 99: Cannot assign requested address for upstream

如下鏈接解決方案:

http://blog.51cto.com/12223582/1877316


3. JMeter測(cè)試問題:address already in use

在Windows Server 2003執(zhí)行JMeter,當(dāng)并發(fā)線程數(shù)較高時(shí)(尤其是測(cè)試機(jī)器還存在連接其他服務(wù)器的socket)挽拔,可能會(huì)產(chǎn)生address already in use的異常辆脸。

搜索一番但校,很多文章指出是Windows的bug螃诅。通過在測(cè)試機(jī)器添加注冊(cè)表項(xiàng)MaxUserPort、TcpTimedWaitDelay状囱,并設(shè)置恰當(dāng)值可解決該錯(cuò)誤(當(dāng)沒有這兩個(gè)注冊(cè)表項(xiàng)時(shí))术裸;或者修改為合適的值(如果已經(jīng)存在這兩個(gè)注冊(cè)表項(xiàng))。

方法:

在運(yùn)行JMeter agent的機(jī)器上上添加注冊(cè)表?xiàng)l目MaxUserPort和TcpTimedWaitDelay亭枷,分別設(shè)置值為65534袭艺、30,以增大可分配的tcp連接端口數(shù)叨粘、減小處于TIME_WAIT狀態(tài)的連接的生存時(shí)間猾编。

該方法確認(rèn)對(duì)Windows Server也有效,因?yàn)樵赪indows Server 2003 R2上發(fā)現(xiàn)缺失MaxUserPort和TcpTimedWaitDelay升敲。具體設(shè)置見下面的連接答倡。

解決方法:

打開注冊(cè)表:ctrl+r 輸入regedit

進(jìn)入注冊(cè)表,路徑為:\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建DWORD值驴党,(十進(jìn)制)設(shè)置為30秒瘪撇。名稱:TcpTimedWaitDe,值:30

新建DWORD值,(十進(jìn)制)最大連接數(shù)65534港庄。名稱:MaxUserPort,值:65534

4. Non HTTP response code: java.net.SocketException/Non HTTP response message: Permission denied...

最近在做性能測(cè)試過程中遇到了高并發(fā)時(shí)倔既,后臺(tái)監(jiān)控各項(xiàng)指標(biāo)都很正常,但是測(cè)試結(jié)果中很多Non HTTP response code: java.net.SocketException/Non HTTP response message: Permission denied: connect的錯(cuò)誤鹏氧,翻了一下帖子發(fā)現(xiàn)是system.properties中配置有些問題渤涌,特此記錄一下,沒有時(shí)間細(xì)分析把还,先上解決方法:

修改%JMETER_HOME%/bin/system.properties文件中的java.net.preferIPv4Stack=true即可实蓬;

https://blog.csdn.net/dilai0918/article/details/101588077

5.java.net.SocketException: Socket closed問題

解決方法:?將每條HTTP Request 添加以下配置??在Advanced中配置 implementation 選擇HttpClient4,Connect 選擇連接保持時(shí)間 單位為毫秒

6. java.net.SocketException/Non HTTP response message: Connection reset

user.properties:

httpclient4.retrycount=1

hc.parameters.file=hc.parameters

hc.parameters:

http.connection.stalecheck$Boolean=true


7.?Jmeter壓測(cè)報(bào)錯(cuò):Non HTTP response code: java.net.ConnectExceptionexception的解決辦法


前一段時(shí)間進(jìn)行jmeter壓測(cè)時(shí),一直報(bào)錯(cuò)笨篷,查看了下日志才發(fā)現(xiàn)報(bào)了一堆Non HTTP response code: java.net.ConnectExceptionexception瞳秽,直接jmeter就沒發(fā)送到服務(wù)端


本想加個(gè)Constant Throughput Timer去進(jìn)行控制qps從而避免錯(cuò)誤率,可是那樣qps就不是服務(wù)器的最大壓力值了率翅。

想了好幾種方法练俐,也將jmeter.properties中的httpclienc.timeout調(diào)大去嘗試,還是有這個(gè)錯(cuò)誤


最后試了一下將client implementation配置成java冕臭,結(jié)果奇跡出現(xiàn)了腺晾,發(fā)送不出去的錯(cuò)誤被避免了燕锥,qps的量也上來了


總結(jié):有加解密的情況下,默認(rèn)的HTTPClinet在POST時(shí)會(huì)自動(dòng)將特殊字符轉(zhuǎn)義悯蝉,然而Java在發(fā)送過程中卻未處理归形;

jmeter發(fā)送http請(qǐng)求時(shí),implementation會(huì)有以下幾種選項(xiàng)

JAVA:使用的是JAVA JVM提供的http方法鼻由,但有一定的限制暇榴,

1、當(dāng)jmeter釋放一個(gè)請(qǐng)求后蕉世,同樣的進(jìn)程中可能不會(huì)再使用了蔼紧;

2、只使用于單進(jìn)程模式狠轻;

3奸例、不支持虛擬主機(jī),不支持相關(guān)的方法向楼,不支持存儲(chǔ)證書的請(qǐng)求


HttpClient4.1:使用的是Apache HttpClient4.1部件

空白:使用Http默認(rèn)請(qǐng)求中配置或jmeter.properties中jmeter.httpsample中的配置

8. Jmeter之Non HTTP response code: java.net.SocketException/Non HTTP response message: Permission denied: connect

最近在做性能測(cè)試過程中遇到了高并發(fā)時(shí)查吊,后臺(tái)監(jiān)控各項(xiàng)指標(biāo)都很正常,但是測(cè)試結(jié)果中很多Non HTTP response code: java.net.SocketException/Non HTTP response message: Permission denied: connect的錯(cuò)誤湖蜕,翻了一下帖子發(fā)現(xiàn)是system.properties中配置有些問題逻卖,特此記錄一下,沒有時(shí)間細(xì)分析重荠,先上解決方法:

修改%JMETER_HOME%/bin/system.properties文件中的java.net.preferIPv4Stack=true即可箭阶;

需要了解原因的可以參考該貼:

https://blog.csdn.net/hualusiyu/article/details/53490183


9. Connection reset

Apache JMeter對(duì)啟用SSL的應(yīng)用程序執(zhí)行性能和/或負(fù)載測(cè)試時(shí),SSL套接字錯(cuò)誤可能是經(jīng)常遇到的麻煩戈鲁,嚴(yán)重阻礙了您的測(cè)試工作仇参。本文重點(diǎn)介紹如何通過相應(yīng)地配置和調(diào)優(yōu)JMeter來克服這些與連接相關(guān)的錯(cuò)誤。

在Jmeter中指示SSL套接字問題的錯(cuò)誤消息示例包括:

Non HTTP response code: java.net.SocketException Non HTTP response message: Connection reset`

`Non HTTP response code: java.net.SocketTimeoutException Non HTTP response message: connect timed out`

`Non HTTP response code: java.net.SocketTimeoutException Non HTTP response message: Read timed out

建議#1:使用最新版本的JMeter

強(qiáng)烈建議使用最新版本婆殿,以利用新的改進(jìn)和組件诈乒。

避免在最后一個(gè)版本之前使用早于3個(gè)版本的版本。

建議#2:在JMeter中啟用DEBUG模式

將以下內(nèi)容添加到j(luò)meter.properties以啟用JMeter Logger面板:

jmeter.loggerpanel.display=true

要通過JMeter菜單將日志級(jí)別增加到DEBUG:

Options -> Log Level -> DEBUG?

要通過log4j2.xml啟用上下文和線路日志記錄的調(diào)試模式:

<Logger name="org.apache.http" level="debug" />

建議#3:設(shè)置連接超時(shí)

JMeter中的默認(rèn)連接超時(shí)是開箱即用的20秒婆芦。為幫助診斷和解決套接字連接問題怕磨,增加此值通常很有幫助。為此消约,請(qǐng)?jiān)贘Meter測(cè)試計(jì)劃中為HTTP Request對(duì)象指定更高的連接超時(shí)肠鲫。例如,設(shè)置為60000(毫秒)以將總超時(shí)增加到60秒或粮。

從“配置元素”選項(xiàng)中添加“HTTP請(qǐng)求默認(rèn)”配置元素(即导饲,右鍵單擊測(cè)試計(jì)劃并添加此“HTTP請(qǐng)求默認(rèn)值”)。

在“HTTP請(qǐng)求默認(rèn)值”中,有一個(gè)選項(xiàng) - 連接'超時(shí)(毫秒)'在此字段中指定您的連接超時(shí)值渣锦,它將應(yīng)用于所有子采樣器硝岗。如果在測(cè)試計(jì)劃級(jí)別添加了“HTTP請(qǐng)求默認(rèn)值”,則它將應(yīng)用于所有采樣器和所有線程組袋毙。

要指定單獨(dú)的連接超時(shí)型檀,請(qǐng)?jiān)诿總€(gè)采樣器的相同字段中指定。單個(gè)采樣器連接超時(shí)將覆蓋“HTTP請(qǐng)求默認(rèn)”連接超時(shí)值听盖。

建議#4:延遲線程創(chuàng)建

JMeter可以選擇延遲線程創(chuàng)建胀溺,直到線程開始采樣(即,在任何線程組延遲和線程本身的加速時(shí)間之后)媳溺。這允許非常大的線程總數(shù)月幌,前提是不會(huì)有太多并發(fā)的線程碍讯。

建議5:禁用并行下載

JMeter使用更多資源來模擬瀏覽器并行獲取嵌入資源悬蔽,如css,gif捉兴,js和靜態(tài)內(nèi)容蝎困。如果有許多用戶,則可能會(huì)創(chuàng)建太多線程倍啥,并且由于JMeter端的帶寬爭(zhēng)用而開始對(duì)響應(yīng)時(shí)間產(chǎn)生負(fù)面影響禾乘。如果要模擬許多用戶,建議禁用并行下載虽缕,因?yàn)镴Meter不會(huì)模擬瀏覽器的緩存始藕,瀏覽器也不會(huì)在后續(xù)請(qǐng)求中重新下載嵌入式資源。

建議#6:配置受信任和客戶端SSL證書

如果您的應(yīng)用程序服務(wù)器層上有內(nèi)部簽名或自簽名證書氮趋,則需要將JMeter配置為將這些證書識(shí)別為有效伍派。要解決此問題,請(qǐng)修改system.properties并使用相關(guān)的簽名者證書配置信任庫剩胁。

# Truststore properties (trusted certificates)javax.net.ssl.trustStore=C:/trust.jksjavax.net.ssl.trustStorePassword=sample

如果您的應(yīng)用程序需要SSL客戶端證書身份驗(yàn)證或授權(quán)诉植,則需要?jiǎng)?chuàng)建密鑰庫并在指向該密鑰庫的system.properties文件中設(shè)置以下屬性:

# Keystore properties (client certificates)javax.net.ssl.keyStore=C:/key.jksjavax.net.ssl.keyStorePassword=sample

建議7:調(diào)整JMeter SSL配置

在jmeter.properties中設(shè)置下面的屬性,以調(diào)整JMeter處理SSL會(huì)話昵观,協(xié)議和密碼的方式:

要啟用SSL會(huì)話共享:

https.sessioncontext.shared=true

設(shè)置默認(rèn)HTTPS協(xié)議級(jí)別:

https.default.protocol=TLSv1.2

要啟用多個(gè)HTTPS協(xié)議:

https.socket.protocols=TLSv1 TLSv1.2

要啟用多個(gè)密碼:

https.cipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256

要在測(cè)試期間保留SSL上下文:

https.use.cached.ssl.context=true

在http 4上設(shè)置重試次數(shù)

httpclient4.retrycount=1

建議#8:?jiǎn)⒂藐惻f連接檢查

為避免HTTP連接池出現(xiàn)問題晾腔,可能需要在JMeter中啟用陳舊連接檢查。在JMeter測(cè)試運(yùn)行期間接收“Socket Closed”異常時(shí)啊犬,應(yīng)使用此步驟灼擂。要啟用過時(shí)連接檢查,請(qǐng)?jiān)趗ser.properties中設(shè)置以下屬性:

http.connection.stalecheck$Boolean=true

建議#9:在Web服務(wù)器上啟用HTTP Keep-Alive

Keep-Alive是HTTP協(xié)議的一個(gè)非常重要的特性觉至。它允許客戶端通過單個(gè)TCP連接發(fā)出多個(gè)HTTP請(qǐng)求剔应。這提供了很大的性能提升,因?yàn)榉駝t建立許多TCP連接將產(chǎn)生大量不必要的網(wǎng)絡(luò)開銷。

建議#10:檢查負(fù)載均衡器配置

如果負(fù)載測(cè)試遇到負(fù)載均衡器前端的應(yīng)用程序领斥,請(qǐng)確保負(fù)載均衡器配置了足夠的最大連接限制以處理預(yù)期負(fù)載嫉到。同樣,驗(yàn)證負(fù)載平衡算法不會(huì)將過多的流量偏向一個(gè)或多個(gè)應(yīng)用程序服務(wù)器實(shí)例月洛,并且該負(fù)載充分分散在應(yīng)用程序服務(wù)器后端之間何恶。

9 .高并發(fā)下載tomcat下的文件時(shí),發(fā)生java.net.SocketException: Connection reset解決方案

(1)問題產(chǎn)生:使用500個(gè)線程并發(fā)下載tomcat工程中的一個(gè)文件時(shí)嚼黔,服務(wù)器出現(xiàn)java.net.SocketException: Connection reset異常细层,

客戶端出現(xiàn)connect timeout;

(2)分析認(rèn)為是服務(wù)器連接超過最大并發(fā)數(shù)而重置唬涧,導(dǎo)致客戶端連接超時(shí)疫赎;

于是配置tomcat的配置文件,修改最大并發(fā)連接數(shù):

在/home/econf/apache-tomcat-6.0.20/conf目錄下碎节,修改server.xml?在

之后重啟tomcat

此問題解決

10. Jmeter 遇到的問題:rc="Non HTTP response code: java.net.NoRouteToHostException" rm="Non HTTP response mess

在使用Jmeter壓測(cè)時(shí)捧搞,遇到日志中有大量的錯(cuò)誤:

rc="Non HTTP response code: java.net.NoRouteToHostException" rm="Non HTTP response message: Cannot assign requested address"?如下圖:

原因:Jmeter 發(fā)壓機(jī)的端口不夠用

解決辦法:?\1. netstat|grep TIME_WAIT |wc -l 查看目前處在TIME_WAIT狀態(tài)的值大不大?\2. 檢查系統(tǒng)sysctl中配置項(xiàng):(/etc/sysctl.conf)?net.ipv4.tcp_tw_reuse = 1?net.ipv4.tcp_tw_recycle = 1?net.ipv4.tcp_max_tw_buckets = 10000 (5000也OK,主要是前兩個(gè)值)?\3. 如果上面三個(gè)值都正常狮荔,cat /proc/sys/net/ipv4/ip_local_port_range 查看可使用的端口范圍胎撇。如果是默認(rèn)范圍,可修改為:net.ipv4.ip_local_port_range = 1024 65535?\4. 執(zhí)行:sysctl -p 殖氏,使設(shè)置立即生效晚树。

11. 采坑匯總

踩坑一:

Response code: Non HTTP response code: java.net.SocketTimeoutException

Response message: Non HTTP response message: connect timed out

查看Load time的時(shí)間要大于request設(shè)置的connect time out時(shí)間,所以拋出該異常雅采【粼鳎可能是由于服務(wù)端有較多請(qǐng)求正在處理(且處理時(shí)間較長(zhǎng)),導(dǎo)致JMeter不能連接上服務(wù)器而產(chǎn)生的婚瓜。

踩坑二:

Java.NET.BindException: Address already in use: connect

原因:短時(shí)間內(nèi)new socket操作很多,而socket.close()操作并不能立即釋放綁定的端口,而是把端口設(shè)置為TIMEWAIT 狀態(tài),過段時(shí)間(默認(rèn)240s)才釋放,(用netstat -na可以看到),最后系統(tǒng)資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區(qū)間在1024-5000之間)

解決方法:在運(yùn)行JMeter agent的機(jī)器上宝鼓,添加注冊(cè)表?xiàng)l目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

MaxUserPort:最大動(dòng)態(tài)端口數(shù)(Default = 5000, Max = 65534)

TcpTimedWaitDelay:TCP等待延遲時(shí)間(30)

TcpNumConnections:TCP最大連接數(shù)(Default = 16,777,214)

MaxFreeTcbs:最大TCP控制塊(1000-2000)

MaxHashTableSize:最大TCB Hash table數(shù)量(64-65536)

解析中值為10進(jìn)制,下方腳本已全轉(zhuǎn)換為16進(jìn)制

Windows Registry Editor Version 5.00

"MaxUserPort"=dword:fffe

"TcpTimedWaitDelay"=dword:1e

"TcpNumConnections"=dword:fffffe

"MaxFreeTcbs"=dword:7D0

"MaxHashTableSize"=dword:10000

踩坑三:

java.lang.OutOfMemoryError: Java heap space

原因:觀察運(yùn)行jmeter機(jī)器的內(nèi)存闰渔,占用較高席函,超過了jmeter設(shè)置的內(nèi)存上限。

解決方案:修改jmeter配置文件冈涧,調(diào)整內(nèi)存可用的范圍

修改/bin/jmeter.bat文件:找到這2行

set HEAP=-Xms256m -Xmx256m

set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

改為:

set HEAP=-Xms1024m –Xmx2048m(最大值不能超過系統(tǒng)內(nèi)存的1/2)

set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

踩坑四:

Response code: Non HTTP response code: java.net.SocketTimeoutException

Response message: Non HTTP response message: Read timed out

發(fā)生該錯(cuò)誤時(shí)茂附,jmeter已經(jīng)連接上服務(wù)器,查看load time沒有超過設(shè)定的request timeout時(shí)間督弓,錯(cuò)誤可能的原因是营曼,服務(wù)器那邊未處理該線程的請(qǐng)求,或者為保證服務(wù)能力愚隧,斷掉了連接蒂阱。

為了驗(yàn)證該猜想,持續(xù)大于半小時(shí)向服務(wù)器發(fā)送該并發(fā)數(shù)量的請(qǐng)求,一段時(shí)間后录煤,request收到503的response鳄厌,證明猜想。

踩坑五:

Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host:

原因:分布式測(cè)試時(shí)妈踊,server和agent之間的連接有問題了嚎。單個(gè)機(jī)器排查后,發(fā)現(xiàn)是某個(gè)agent機(jī)器安裝了多個(gè)網(wǎng)卡廊营,rmi遠(yuǎn)程的時(shí)候找的是虛擬機(jī)的網(wǎng)卡歪泳,導(dǎo)致連接失敗。

解決方案:禁掉不使用的虛擬機(jī)網(wǎng)卡露筒,測(cè)試之后再恢復(fù)呐伞。

踩坑六:

接口參數(shù)有中文時(shí),請(qǐng)求后傳參是亂碼慎式?

內(nèi)容編碼設(shè)置為utf-8

踩坑七:

接口參數(shù)化有中文時(shí)伶氢,請(qǐng)求后傳參是亂碼?

內(nèi)容編碼設(shè)置為gb2312

踩坑八:

請(qǐng)求接口響應(yīng)亂碼瞬捕,編碼問題修改配置文件:

jmeter.properties中的sampleresult.default.encoding參數(shù)鞍历,改成sampleresult.default.encoding=utf-8

jmeter安裝路徑,改參數(shù)E:\jmeter\apache-jmeter-3.0\bin文件jmeter.properties中

#sampleresult.default.encoding=ISO-8859-1改為

sampleresult.default.encoding=utf-8

12. Jmeter問題集錦

踩坑一:

Response code: Non HTTP response code: java.net.SocketTimeoutException

Response message: Non HTTP response message: connect timed out

查看Load time的時(shí)間要大于request設(shè)置的connect time out時(shí)間肪虎,所以拋出該異常【逵迹可能是由于服務(wù)端有較多請(qǐng)求正在處理(且處理時(shí)間較長(zhǎng))扇救,導(dǎo)致JMeter不能連接上服務(wù)器而產(chǎn)生的。

踩坑二:

Java.NET.BindException: Address already in use: connect

原因:短時(shí)間內(nèi)new socket操作很多,而socket.close()操作并不能立即釋放綁定的端口,而是把端口設(shè)置為TIMEWAIT 狀態(tài),過段時(shí)間(默認(rèn)240s)才釋放,(用netstat -na可以看到),最后系統(tǒng)資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區(qū)間在1024-5000之間)

解決方法:在運(yùn)行JMeter agent的機(jī)器上香嗓,添加注冊(cè)表?xiàng)l目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

MaxUserPort:最大動(dòng)態(tài)端口數(shù)(Default = 5000, Max = 65534)

TcpTimedWaitDelay:TCP等待延遲時(shí)間(30)

TcpNumConnections:TCP最大連接數(shù)(Default = 16,777,214)

MaxFreeTcbs:最大TCP控制塊(1000-2000)

MaxHashTableSize:最大TCB Hash table數(shù)量(64-65536)

解析中值為10進(jìn)制迅腔,下方腳本已全轉(zhuǎn)換為16進(jìn)制

Windows Registry Editor Version 5.00

"MaxUserPort"=dword:fffe

"TcpTimedWaitDelay"=dword:1e

"TcpNumConnections"=dword:fffffe

"MaxFreeTcbs"=dword:7D0

"MaxHashTableSize"=dword:10000

踩坑三:

java.lang.OutOfMemoryError: Java heap space

原因:觀察運(yùn)行jmeter機(jī)器的內(nèi)存,占用較高靠娱,超過了jmeter設(shè)置的內(nèi)存上限沧烈。

解決方案:修改jmeter配置文件,調(diào)整內(nèi)存可用的范圍

修改/bin/jmeter.bat文件:找到這2行

set HEAP=-Xms256m -Xmx256m

set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

改為:

set HEAP=-Xms1024m –Xmx2048m(最大值不能超過系統(tǒng)內(nèi)存的1/2)

set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

踩坑四:

Response code: Non HTTP response code: java.net.SocketTimeoutException

Response message: Non HTTP response message: Read timed out

發(fā)生該錯(cuò)誤時(shí)像云,jmeter已經(jīng)連接上服務(wù)器锌雀,查看load time沒有超過設(shè)定的request timeout時(shí)間,錯(cuò)誤可能的原因是迅诬,服務(wù)器那邊未處理該線程的請(qǐng)求腋逆,或者為保證服務(wù)能力,斷掉了連接侈贷。

為了驗(yàn)證該猜想惩歉,持續(xù)大于半小時(shí)向服務(wù)器發(fā)送該并發(fā)數(shù)量的請(qǐng)求,一段時(shí)間后,request收到503的response撑蚌,證明猜想上遥。

踩坑五:

Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host:

原因:分布式測(cè)試時(shí),server和agent之間的連接有問題争涌。單個(gè)機(jī)器排查后露该,發(fā)現(xiàn)是某個(gè)agent機(jī)器安裝了多個(gè)網(wǎng)卡,rmi遠(yuǎn)程的時(shí)候找的是虛擬機(jī)的網(wǎng)卡第煮,導(dǎo)致連接失敗解幼。

解決方案:禁掉不使用的虛擬機(jī)網(wǎng)卡,測(cè)試之后再恢復(fù)包警。

踩坑六:

接口參數(shù)有中文時(shí)撵摆,請(qǐng)求后傳參是亂碼?

內(nèi)容編碼設(shè)置為utf-8

踩坑七:

接口參數(shù)化有中文時(shí)害晦,請(qǐng)求后傳參是亂碼特铝?

內(nèi)容編碼設(shè)置為gb2312

踩坑八:

請(qǐng)求接口響應(yīng)亂碼,編碼問題修改配置文件:

jmeter.properties中的sampleresult.default.encoding參數(shù)壹瘟,改成sampleresult.default.encoding=utf-8

jmeter安裝路徑鲫剿,改參數(shù)E:\jmeter\apache-jmeter-3.0\bin文件jmeter.properties中

#sampleresult.default.encoding=ISO-8859-1改為

sampleresult.default.encoding=utf-8

13. JMeter測(cè)試問題:java.net.SocketTimeoutException: connect timed out,Read timed out

JMeter測(cè)試計(jì)劃線程組設(shè)置:Ramp-UP Period為5秒稻轨。勾選【delay thread creation until needed 】允許需要時(shí)創(chuàng)建線程灵莲。循環(huán)次數(shù)設(shè)為10。

線程組包含兩個(gè)請(qǐng)求殴俱,分別是①上傳數(shù)據(jù)政冻,②下載數(shù)據(jù)。設(shè)置兩個(gè)請(qǐng)求之間sleep 3000ms线欲。其他為缺省設(shè)置明场。

每個(gè)請(qǐng)求connect time out:3000ms

每個(gè)請(qǐng)求response time out:3000ms

分別以遞增線程數(shù)執(zhí)行測(cè)試,由兩個(gè)agent分別執(zhí)行李丰。在線程數(shù)為500時(shí)苦锨,產(chǎn)生錯(cuò)誤:

錯(cuò)誤1:Response message: Non HTTP response message: connect timed out

錯(cuò)誤分析:通過Load time值看,由于該線程耗費(fèi)時(shí)間(3002)大于設(shè)置的connect time out(3000ms)趴泌,因此拋出該異常舟舒。問題可能是由于服務(wù)端有較多請(qǐng)求正在處理(且處理時(shí)間較長(zhǎng)),導(dǎo)致JMeter不能連接上服務(wù)器而產(chǎn)生的踱讨。

JMeter原始錯(cuò)誤信息:

概要:

Thread Name: 線程組 1-367

Sample Start: 2013-07-05 11:04:17 CST

Load time: 3002

Latency: 0

Size in bytes: 1677

Headers size in bytes: 0

Body size in bytes: 1677

Sample Count: 1

Error Count: 1

Response code: Non HTTP response code: java.net.SocketTimeoutException

Response message: Non HTTP response message: connect timed out

詳細(xì)信息:

java.net.SocketTimeoutException: connect timed out

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)

at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)

at java.net.Socket.connect(Socket.java:529)

at sun.net.NetworkClient.doConnect(NetworkClient.java:158)

at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)

at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)

at sun.net.www.http.HttpClient.(HttpClient.java:234)

at sun.net.www.http.HttpClient.New(HttpClient.java:307)

at sun.net.www.http.HttpClient.New(HttpClient.java:324)

at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)

at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)

at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)

at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:487)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1088)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1077)

at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)

at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)

at java.lang.Thread.run(Thread.java:662)


錯(cuò)誤2:Response message: Non HTTP response message: Read timed out

錯(cuò)誤分析:通過返回錯(cuò)誤信息看魏蔗,發(fā)生該錯(cuò)誤時(shí),JMeter已經(jīng)連接上服務(wù)器痹筛,但是產(chǎn)生read time out莺治。從load time(2998)看廓鞠,所用時(shí)間并沒有超過設(shè)定超時(shí)時(shí)間(3000),因此錯(cuò)誤不大可能是JMeter本身產(chǎn)生的谣旁。一種可能是床佳,服務(wù)器那邊未處理該線程的請(qǐng)求,或者為保證服務(wù)能力榄审,斷掉了連接砌们。

JMeter原始錯(cuò)誤信息:

概要:

Thread Name: 線程組 1-10

Sample Start: 2013-07-05 11:12:45 CST

Load time: 2988

Latency: 0

Size in bytes: 2431

Headers size in bytes: 0

Body size in bytes: 2431

Sample Count: 1

Error Count: 1

Response code: Non HTTP response code: java.net.SocketTimeoutException

Response message: Non HTTP response message: Read timed out

詳細(xì)信息:

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(SocketInputStream.java:129)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)

at java.io.BufferedInputStream.read(BufferedInputStream.java:317)

at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:697)

at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:640)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195)

at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2300)

at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:579)

at java.net.URLConnection.getContentLength(URLConnection.java:474)

at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.readResponse(HTTPJavaImpl.java:230)


關(guān)于JMeter結(jié)果指標(biāo)值說明的:

http://www.cnblogs.com/Carrie_Liang/archive/2008/11/10/1330997.html

http://asmetg.blog.163.com/blog/static/105828863201111644313362/


回到通常的情況,最近幾天搁进,當(dāng)我為一項(xiàng)測(cè)試增加虛擬用戶數(shù)量時(shí)浪感,遇到了以下錯(cuò)誤。我試圖測(cè)試低至90個(gè)虛擬用戶的J2EE應(yīng)用程序饼问,每個(gè)虛擬用戶的啟動(dòng)時(shí)間為一秒鐘影兽,延遲之間的間隔為一秒鐘。

錯(cuò)誤– jmeter.protocol.http.sampler.HTTPSampler:readResponse:java.net.SocketTimeoutException:讀取超時(shí)

錯(cuò)誤– jmeter.protocol.http.sampler.HTTPSampler:原因:java.net.SocketTimeoutException:讀取超時(shí)

錯(cuò)誤– jmeter.protocol.http.sampler.HTTPSampler:readResponse:java.net.SocketException:服務(wù)器中的文件意外結(jié)束

我花了幾個(gè)小時(shí)試圖在互聯(lián)網(wǎng)上找到有關(guān)此錯(cuò)誤消息的信息莱革,但是在閱讀了一些主題并注意到Google返回的結(jié)果少于我的搜索結(jié)果之后峻堰,我開始想像這不是我的jmeter中的問題配置,但在應(yīng)用程序本身盅视。當(dāng)然捐名,這本來應(yīng)該是尋找的第一位,但是我有點(diǎn)失去了注意力闹击,考慮了所有其他可能的因素镶蹋,例如JMeter Agent內(nèi)存,Glassfish一側(cè)的最大連接數(shù)拇砰,Glassfish一側(cè)的最大線程數(shù)梅忌, EJB池效率,JDBC池效率等除破。

因此,我首先嘗試的是使用最少1個(gè)JMeter Agent(而不是3個(gè))再次運(yùn)行該測(cè)試琼腔,并將虛擬用戶數(shù)量從1瑰枫、2、4丹莲、6和10增加到10光坝。一旦我開始對(duì)超過6個(gè)虛擬用戶進(jìn)行測(cè)試,錯(cuò)誤就會(huì)開始出現(xiàn)甥材。因此盯另,我得出這樣的結(jié)論:某些應(yīng)用程序請(qǐng)求執(zhí)行時(shí)間太長(zhǎng),使應(yīng)用程序服務(wù)器的線程繁忙洲赵,并且不允許傳入請(qǐng)求使用資源鸳惯。

因此商蕴,我再次在一個(gè)簡(jiǎn)單的JMeter GUI中運(yùn)行了相同的測(cè)試,將線程組配置為10個(gè)虛擬用戶芝发。結(jié)果呢绪商?我的要求之一是大約需要30秒才能完成(對(duì)于10個(gè)用戶),而大約要花6秒(對(duì)于1個(gè)虛擬用戶)辅鲸,再次運(yùn)行測(cè)試格郁,逐漸增加n個(gè)虛擬用戶,僅證實(shí)了我的理論独悴,即響應(yīng)時(shí)間在增加與虛擬用戶數(shù)量成比例(當(dāng)然例书,我在想什么?

很明顯刻炒,當(dāng)我的請(qǐng)求中有5個(gè)花了30秒以上才能完成(因此5個(gè)可用的http線程正忙)時(shí)决采,就沒有空間容納第六蜡娶,第七等等麻掸。

因此,對(duì)于仍然在尋找該錯(cuò)誤的所有人筹煮,它在您的應(yīng)用程序?qū)崿F(xiàn)中占90%以上筏勒。某種東西正在占用資源移迫,服務(wù)器斷開了連接。以增量方式檢查所有請(qǐng)求管行,并找到瓶頸厨埋。

并且總是從最后一步開始(在這種情況下,我沒有這樣做!

希望這會(huì)有所幫助捐顷。如果我找到了它荡陷,我肯定會(huì)使用它



使用Jmeter做性能測(cè)試前需要修改的配置

使用jmeter對(duì)多個(gè)項(xiàng)目做性能測(cè)試后發(fā)現(xiàn),jmeter很多默認(rèn)配置是無法支持我們直接開始性能測(cè)試任務(wù)的迅涮;所以在此本人收集了一些未修改配置時(shí)會(huì)出現(xiàn)的常見問題废赞,并給出了對(duì)應(yīng)的解決方案

問題一:接口錯(cuò)誤信息為java.net.BindException: Address already in use?原因:?短時(shí)間內(nèi)new socket操作很多,而socket.close()操作并不能立即釋放綁定的端口,而是把端口設(shè)置為TIMEWAIT 狀態(tài),過段時(shí)間才釋放,(用netstat -na可以看到),最后系統(tǒng)資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區(qū)間在1024-5000之間)。?解決辦法:?1.按win+R打開運(yùn)行叮姑,輸入regedit命令打開注冊(cè)表唉地;?2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,?1)右擊parameters传透,添加一個(gè)新的DWORD耘沼,名字為MaxUserPort?2)然后雙擊MaxUserPort,輸入數(shù)值數(shù)據(jù)為65534朱盐,基數(shù)選擇十進(jìn)制?3.重啟電腦

問題二:運(yùn)行jmeter腳本后無數(shù)據(jù)返回群嗤,jmeter server顯示連接后就立即結(jié)束?原因:?這是剛接觸jmeter工具不久的朋友,或者是在使用分布式部署之后容易犯的錯(cuò)誤兵琳,Jmeter執(zhí)行時(shí)未獲取到參數(shù)化文件csv data set config地址中的數(shù)據(jù)?解決辦法:?jmeter測(cè)試數(shù)據(jù)slave機(jī)器一定要存放狂秘,并且master機(jī)器的csv測(cè)試數(shù)據(jù)地址要以填寫slave機(jī)器的地址

問題三:jmeter運(yùn)行時(shí)報(bào)內(nèi)存溢出OutOfMemoryError?原因:?Jmeter預(yù)設(shè)的內(nèi)存不足骇径,需要手動(dòng)修改?解決辦法:?windows環(huán)境下,修改jmeter.bat:?set HEAP=-Xms256m -Xmx256m?set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m?改為:?set HEAP=-Xms512m -Xmx2048m?set NEW=-XX:NewSize=256m -XX:MaxNewSize=1024m?(此數(shù)據(jù)可根據(jù)自己電腦性能適當(dāng)修改)?linux環(huán)境下赃绊,修改jmeter.sh?java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar?dirname $0/ApacheJMeter.jar “$@”

問題四:jmeter亂碼問題?解決辦法:?在jmeter.properties 這個(gè)文件里面找到sampleresult.default.encoding=xx既峡,后面xx改成utf-8,然后刪除前面的注釋符號(hào)#碧查。?如jmeter的body里面中文顯示不出來运敢,可找到JSyntaxTextArea然后把以js開頭的注釋取消。?JDBC請(qǐng)求查詢結(jié)果亂碼忠售,可在JDBC連接配置中將URL加上characterEncoding=UTF-8

問題五:jmeter只有status信息传惠,無response詳細(xì)信息?原因:?Jmeter默認(rèn)禁掉了運(yùn)行過程中每個(gè)request的具體response信息收集,只保留了status?解決辦法:?修改jmeter.properties文件中Results file configuration稻扬。把所有和response相關(guān)False的項(xiàng)改為True

1卦方、修改物理內(nèi)存

使用jmeter進(jìn)行壓力測(cè)試時(shí)遇到一段時(shí)間后報(bào)內(nèi)存溢出outfmenmory錯(cuò)誤,導(dǎo)致jmeter卡死了泰佳,先嘗試在jmeter.bat中增加了JVM_ARGS="-Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k"盼砍,但結(jié)果運(yùn)行時(shí)間增加了,但最終還是報(bào)內(nèi)存溢出逝她,百度后按照網(wǎng)友的建議更改了如下設(shè)置后jmeter就沒有再卡了:

1浇坐、windows環(huán)境下,修改jmeter.bat:?set HEAP=-Xms512m -Xmx4000m?set NEW=-XX:NewSize=256m -XX:MaxNewSize=1024m?改為:?set HEAP=-Xms256m -Xmx1024m?set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m?set PERM=-XX:PermSize=1024m -XX:MaxPermSize=1024m?根據(jù)經(jīng)驗(yàn)黔宛,heap最多設(shè)置為物理內(nèi)存的一半近刘,默認(rèn)設(shè)置為512M.如果heap超過物理內(nèi)存的一半,可能運(yùn)行jmeter會(huì)慢臀晃,甚至出現(xiàn)內(nèi)存溢出觉渴,原因java比較吃內(nèi)存,占CPU.

注意:JDK32位的電腦Xmx不能超過1500m徽惋,最大1378m.否則在啟動(dòng)Jmeter時(shí)會(huì)報(bào)錯(cuò):


2案淋、jmeter 錄制 排除/包含模式設(shè)置



設(shè)置包含模式及排除模式,若不設(shè)置险绘,在錄制完之后哎迄,可以把不需要的.css .jpg的行刪掉。標(biāo)準(zhǔn)的包含模式及排除模式如下所列隆圆。

i. ? ? ? .* - all

ii. ? ? ? .*.png – png images

iii. ? ? ? .*.gif – gif images

iv. ? ? ? .*.jpg – jpeg images

v. ? ? ? .*.php

vi. ? ? ? .*.jsp

vii. ? ? ? .*.html

viii. ? ? ? .*.htm

ix. ? ? ? .*.js



3、jmeter 可視化圖形報(bào)告配置


1翔烁、使用CMD 進(jìn)入jmeter bin目錄

輸入:jmeter -n -t (腳本路徑) -l testLogFile -e -o (存放報(bào)告的路徑)

樣本:jmeter -n -t C:\Users\samsung-\Desktop\接口報(bào)告\腳本\登錄頁面+我的窩頁.jmx -l testLogFile -e -o ./out


2渺氧、對(duì)已有的CSV文件生成報(bào)告,需配置jmeter.properties


配置修改:


jmeter.save.saveservice.bytes = true

# Only available with HttpClient4

#jmeter.save.saveservice.sent_bytes=true

jmeter.save.saveservice.label = true

jmeter.save.saveservice.latency = true

jmeter.save.saveservice.response_code = true

jmeter.save.saveservice.response_message = true

jmeter.save.saveservice.successful = true

jmeter.save.saveservice.thread_counts = true

jmeter.save.saveservice.thread_name = true

jmeter.save.saveservice.time = true

jmeter.save.saveservice.connect_time = true

# the timestamp format must include the time and should include the date.

# For example the default, which is milliseconds since the epoch:

jmeter.save.saveservice.timestamp_format = ms

# Or the following would also be suitable

jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss如果需要Errors報(bào)告更詳細(xì)蹬屹,配置:jmeter.save.saveservice.assertion_results_failure_message = true使用事物控制器請(qǐng)確認(rèn)Generate parent sample為未勾選

對(duì)已有CSV日志文件生成報(bào)告

命令:jmeter -g??-o?<Path to output folder>

參考:http://www.cnblogs.com/greattao/p/6813156.html

4侣背、上傳圖片


某些瀏覽器(例如Firefox和Opera)在上傳文件時(shí)不包含文件的全名白华。這可能導(dǎo)致JMeter代理服務(wù)器失敗。一個(gè)解決方案是確保任何要上傳的文件都位于JMeter工作目錄中贩耐,方法是復(fù)制文件弧腥,或者在包含文件的目錄中啟動(dòng)JMeter。


5潮太、記錄在JMeter中本機(jī)不可用的基于HTTP的非文本協(xié)議


您可能需要記錄JMeter(自定義二進(jìn)制協(xié)議管搪,Adobe Flex,Microsoft Silverlight铡买,...)默認(rèn)情況下未處理的HTTP協(xié)議更鲁。雖然JMeter不提供本地代理實(shí)現(xiàn)來記錄這些協(xié)議,但您可以通過實(shí)現(xiàn)自定義SamplerCreator來記錄這些協(xié)議奇钞。此采樣器創(chuàng)建者將將二進(jìn)制格式轉(zhuǎn)換為可添加到JMeter測(cè)試用例的HTTPSamplerBase子類澡为。有關(guān)詳細(xì)信息,請(qǐng)參閱“擴(kuò)展JMeter”景埃。



6媒至、JMeter4.0版本修改成中文界面



分布式壓測(cè)配置修改及啟動(dòng)

配置修改:?修改 master 配置?修改 jmeter.properties remote_hosts 字段值,IP 為分布式 agent 的 IP 和端口谷徙。端口默認(rèn)值 1099拒啰。?remote_hosts=agent1IP:1099,agent2IP:1099

修改 slave 配置?-Jserver.rmi.ssl.disable=true

壓測(cè)命令:

分別在不同 slave 上啟動(dòng)分布式 agent?jmeter-server -Jserver.rmi.ssl.disable=true -Djava.awt.headless=true -Djava.rmi.server.hostname=agent1IP

jmeter-server -Jserver.rmi.ssl.disable=true -Djava.awt.headless=true -Djava.rmi.server.hostname=agent2IP?master 機(jī)器上使用命令?jmeter -Djava.awt.headless=true -Jserver.rmi.ssl.disable=true -n -t c.jmx -R agent1IP,agent2IP -l test.jtl


jmeter常見錯(cuò)誤:


錯(cuò)誤一:?Response code: Non HTTP response code: java.net.SocketTimeoutException?Response message: Non HTTP response message: connect timed out

查看Load time的時(shí)間要大于request設(shè)置的connect time out時(shí)間,所以拋出該異常蒂胞⊥寄兀可能是由于服務(wù)端有較多請(qǐng)求正在處理(且處理時(shí)間較長(zhǎng)),導(dǎo)致JMeter不能連接上服務(wù)器而產(chǎn)生的骗随。

錯(cuò)誤二:?Java.NET.BindException: Address already in use: connect

原因:短時(shí)間內(nèi)new socket操作很多,而socket.close()操作并不能立即釋放綁定的端口,而是把端口設(shè)置為TIMEWAIT 狀態(tài),過段時(shí)間(默認(rèn)240s)才釋放,(用netstat -na可以看到),最后系統(tǒng)資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區(qū)間在1024-5000之間)?解決方法:在運(yùn)行JMeter agent的機(jī)器上蛤织,添加注冊(cè)表?xiàng)l目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters?MaxUserPort 65334?TcpTimedWaitDelay 30

錯(cuò)誤三:?java.lang.OutOfMemoryError: Java heap space

原因:觀察運(yùn)行jmeter機(jī)器的內(nèi)存,占用較高鸿染,超過了jmeter設(shè)置的內(nèi)存上限指蚜。?解決方案:修改jmeter配置文件,調(diào)整內(nèi)存可用的范圍

修改/bin/jmeter.bat文件:找到這2行?set HEAP=-Xms256m -Xmx256m?set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m?改為:?set HEAP=-Xms1024m –Xmx2048m(最大值不能超過系統(tǒng)內(nèi)存的1/2)?set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

錯(cuò)誤四:?Response code: Non HTTP response code: java.net.SocketTimeoutException?Response message: Non HTTP response message: Read timed out

發(fā)生該錯(cuò)誤時(shí)涨椒,jmeter已經(jīng)連接上服務(wù)器摊鸡,查看load time沒有超過設(shè)定的request timeout時(shí)間,錯(cuò)誤可能的原因是蚕冬,服務(wù)器那邊未處理該線程的請(qǐng)求免猾,或者為保證服務(wù)能力,斷掉了連接囤热。?為了驗(yàn)證該猜想猎提,持續(xù)大于半小時(shí)向服務(wù)器發(fā)送該并發(fā)數(shù)量的請(qǐng)求,一段時(shí)間后旁蔼,request收到503的response锨苏,證明猜想疙教。

錯(cuò)誤五:?Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host:

原因:分布式測(cè)試時(shí),server和agent之間的連接有問題伞租。單個(gè)機(jī)器排查后贞谓,發(fā)現(xiàn)是某個(gè)agent機(jī)器安裝了多個(gè)網(wǎng)卡,rmi遠(yuǎn)程的時(shí)候找的是虛擬機(jī)的網(wǎng)卡葵诈,導(dǎo)致連接失敗裸弦。?解決方案:禁掉不使用的虛擬機(jī)網(wǎng)卡,測(cè)試之后再恢復(fù)驯击。

jmeter**腳本運(yùn)行的過程中烁兰,服務(wù)器性能參數(shù)沒有明顯變化(CPU,內(nèi)存徊都,I/O)沪斟,但request的響應(yīng)時(shí)間很長(zhǎng)。**

原因:觀察jmeter agent機(jī)器網(wǎng)絡(luò)使用情況暇矫,網(wǎng)絡(luò)使用持續(xù)達(dá)到帶寬的限制峰值主之。request 發(fā)送的過程中pending在網(wǎng)絡(luò)中,實(shí)際并發(fā)的request并沒有同一時(shí)間到達(dá)服務(wù)器李根,所以服務(wù)器沒有明顯變化槽奕。?解決方案:提高jmeter agent機(jī)器網(wǎng)絡(luò)帶寬。

錯(cuò)誤六:

Connection timed out: connect

java.net.ConnectException: Connection timed out: connect

at java.net.DualStackPlainSocketImpl.connect0(Native Method)

at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)

at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

at java.net.AbstractPlainSocketImpl.connect(Unknown Source)

at java.net.PlainSocketImpl.connect(Unknown Source)

at java.net.SocksSocketImpl.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)

at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)

at org.apache.jmeter.protocol.http.sampler.hc.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:318)

at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuredConnection.open(MeasuringConnectionManager.java:114)

at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)

at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)

at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)

at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)

at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:654)

at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:413)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.followRedirects(HTTPSamplerBase.java:1542)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.resultProcessing(HTTPSamplerBase.java:1636)

at org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.resultProcessing(HTTPAbstractImpl.java:519)

at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:493)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1189)

at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1178)

at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:491)

at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:425)

at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254)

at java.lang.Thread.run(Unknown Source)

原因分析

可能是因?yàn)槎丝谔?hào)耗盡房轿,一般一臺(tái)服務(wù)器的端口號(hào)最多是65535個(gè)粤攒,建議使用該命令分別查看下壓測(cè)機(jī)與服務(wù)器的端口使用情況,netstat -nat|grep -i 8080|wc -l囱持,如果這個(gè)個(gè)數(shù)在6w左右夯接,那可能就是端口號(hào)用盡,同時(shí)查看下大多數(shù)的端口狀態(tài),應(yīng)該都是time_wait狀態(tài)?解決方案:?如果是壓測(cè)機(jī)纷妆,端口號(hào)用盡盔几,那就增加壓測(cè)機(jī),使用jmeter分布式壓測(cè)(jmeter默認(rèn)開啟keep_alive的)?如果數(shù)服務(wù)器掩幢,端口號(hào)用盡逊拍,最大的可能是服務(wù)器端開了短鏈接,把短鏈接配置變成長(zhǎng)連接即可?因?yàn)槿绻?wù)器端是短鏈接际邻,當(dāng)jmeter每發(fā)起一個(gè)請(qǐng)求就會(huì)建立一次tcp三次握手芯丧,傳輸完數(shù)據(jù)后,連接其實(shí)沒有關(guān)世曾,連接狀態(tài)是time_wait,下個(gè)請(qǐng)求來了注整,會(huì)重新開啟一個(gè)新的端口,建立tcp三次握手,傳輸數(shù)據(jù)....肿轨,這樣隨著請(qǐng)求的越來越多,端口就會(huì)變得越來越少蕊程,所以端口很快耗盡椒袍,而且大多數(shù)端口都處于time_wait狀態(tài),如果服務(wù)器端也支持長(zhǎng)連接,那么下次請(qǐng)求來了藻茂,就會(huì)在上次請(qǐng)求的通道上繼續(xù)傳輸驹暑,端口使用率大大的降低,就有效的避免了端口耗盡問題辨赐。


原因:Jmeter默認(rèn)禁掉了運(yùn)行過程中每個(gè)request的具體response信息收集优俘,只保留了status。?解決方法:修改jmeter.properties文件中Results file configuration掀序。把所有和response相關(guān)False的項(xiàng)改為True帆焕。運(yùn)行后將輸出保存.jtl文件中。添加tree監(jiān)聽器不恭,過濾只顯示error request叶雹,可以查看到request和response的具體信息,從而判斷出錯(cuò)原因换吧。

tree report**中顯示socket time out相關(guān)的錯(cuò)誤折晦,如何判斷是jmeter工具的原因,還是服務(wù)器的原因沾瓦。**



分類:?Jmeter

好文要頂?關(guān)注我?收藏該文??

Young哥哥

關(guān)注 - 2

粉絲 - 37

+加關(guān)注

0

0

??上一篇:?ES快速入門

??下一篇:?Django常見問題集錦

刷新評(píng)論刷新頁面返回頂部

登錄后才能查看或發(fā)表評(píng)論满着,立即?登錄?或者?逛逛?博客園首頁

【推薦】并行超算云面向博客園粉絲推出“免費(fèi)算力限時(shí)申領(lǐng)”特別活動(dòng)

【推薦】百度智能云超值優(yōu)惠:新用戶首購云服務(wù)器1核1G低至69元/年

【推薦】跨平臺(tái)組態(tài)\工控\仿真\CAD 50萬行C++源碼全開放免費(fèi)下載!

【推薦】和開發(fā)者在一起:華為開發(fā)者社區(qū)贯莺,入駐博客園科技品牌專區(qū)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末风喇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乖篷,更是在濱河造成了極大的恐慌响驴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撕蔼,死亡現(xiàn)場(chǎng)離奇詭異豁鲤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鲸沮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門琳骡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讼溺,你說我怎么就攤上這事楣号。” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵炫狱,是天一觀的道長(zhǎng)藻懒。 經(jīng)常有香客問我,道長(zhǎng)视译,這世上最難降的妖魔是什么嬉荆? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮酷含,結(jié)果婚禮上鄙早,老公的妹妹穿的比我還像新娘。我一直安慰自己椅亚,他們只是感情好限番,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呀舔,像睡著了一般弥虐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上别威,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天躯舔,我揣著相機(jī)與錄音,去河邊找鬼省古。 笑死粥庄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豺妓。 我是一名探鬼主播惜互,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼琳拭!你這毒婦竟也來了训堆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤白嘁,失蹤者是張志新(化名)和其女友劉穎坑鱼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體絮缅,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲁沥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耕魄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片画恰。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吸奴,靈堂內(nèi)的尸體忽然破棺而出允扇,到底是詐尸還是另有隱情缠局,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布考润,位于F島的核電站狭园,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏额划。R本人自食惡果不足惜妙啃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俊戳。 院中可真熱鬧,春花似錦馆匿、人聲如沸抑胎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阿逃。三九已至,卻和暖如春赃蛛,著一層夾襖步出監(jiān)牢的瞬間恃锉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工呕臂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留破托,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓歧蒋,卻偏偏與公主長(zhǎng)得像土砂,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谜洽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • jmeter常見錯(cuò)誤: 錯(cuò)誤一: Response code: Non HTTP response code: j...
    OTL閱讀 375評(píng)論 0 0
  • 錯(cuò)誤1 java.io.FileNotFoundException:rmi_keystore.jks 文件校驗(yàn)問題...
    Canon_2020閱讀 6,921評(píng)論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理萝映,服務(wù)發(fā)現(xiàn),斷路器阐虚,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架序臂,建立于...
    Hsinwong閱讀 22,394評(píng)論 1 92
  • 前言 多年以前自學(xué)Java,在本地做了一些筆記实束。最近幾年流行播客奥秆,一方面防止丟失,一方面可以幫助其他小伙伴...
    chaohx閱讀 1,033評(píng)論 0 3