You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter分布式测试出现java.net.SocketException: Broken pipe错误求助

JMeter分布式测试Broken pipe错误处理

分布式测试场景下,部分从机客户端出现请求执行不完整问题(例如发送10000个请求仅成功执行5000个),已排查/etc/ssh/ssh_config配置无异常,错误日志如下:

2023-02-07 17:35:55,125 ERROR o.a.j.s.BatchSampleSender: sampleOccurred
java.rmi.MarshalException: error marshalling arguments; nested exception is: 
    java.net.SocketException: Broken pipe (Write failed)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160) ~[?:?]
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:217) ~[?:?]
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:162) ~[?:?]
    at com.sun.proxy.$Proxy19.processBatch(Unknown Source) ~[?:?]
    at org.apache.jmeter.samplers.BatchSampleSender.sampleOccurred(BatchSampleSender.java:182) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.samplers.DataStrippingSampleSender.sampleOccurred(DataStrippingSampleSender.java:106) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.samplers.RemoteListenerWrapper.sampleOccurred(RemoteListenerWrapper.java:94) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.ListenerNotifier.notifyListeners(ListenerNotifier.java:58) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.notifyListeners(JMeterThread.java:1037) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:591) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core.jar:5.5]
    at java.lang.Thread.run(Thread.java:834) ~[?:?]
Caused by: java.net.SocketException: Broken pipe (Write failed)
    at java.net.SocketOutputStream.socketWrite0(Native Method) ~[?:?]
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110) ~[?:?]
    at java.net.SocketOutputStream.write(SocketOutputStream.java:150) ~[?:?]
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81) ~[?:?]
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:127) ~[?:?]
    at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1883) ~[?:?]
    at java.io.ObjectOutputStream$BlockDataOutputStream.writeByte(ObjectOutputStream.java:1921) ~[?:?]
    at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1582) ~[?:?]
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:352) ~[?:?]
    at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:293) ~[?:?]
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:155) ~[?:?]
    ... 12 more

可行解决方案

  • 固定RMI端口并关闭SSL:修改JMeter配置文件jmeter.properties,指定主机和从机的RMI本地端口避免冲突;若无需加密传输,关闭SSL减少通信开销
    client.rmi.localport=60000
    server.rmi.localport=60001
    server.rmi.ssl.disable=true
    
  • 调整采样发送策略:将sample_sender改为DirectSampleSender(直接发送采样结果,不批量),或调大batch_sample_sender.max_size参数优化批量传输大小
    sample_sender=DirectSampleSender
    # 或调整批量大小
    batch_sample_sender.max_size=1000
    
  • 排查网络稳定性:检查主机与从机间的网络带宽、丢包率,确认无防火墙、负载均衡设备主动断开长连接
  • 优化JVM内存配置:在从机的jmeter启动脚本中调整HEAP参数,避免内存不足导致连接中断
    HEAP="-Xms2g -Xmx6g"
    
  • 升级JMeter版本:若使用旧版本(如5.5),升级至最新稳定版,修复已知的RMI通信相关bug

内容的提问来源于stack exchange,提问作者tolgagul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:25:26