首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectOutputStream受到攻击

ObjectOutputStream受到攻击
EN

Stack Overflow用户
提问于 2013-04-12 19:53:24
回答 1查看 1.3K关注 0票数 5

负责在套接字上写入(大量数据,大约4-5MBPS)的线程被卡住了,有时长达15分钟,然后再次执行操作,然后再次被卡住,部分堆栈跟踪如下:

代码语言:javascript
复制
 java.lang.Thread.State: RUNNABLE
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.BufferedOutputStream.write(Unknown Source)
    - locked <0xa4ca4660> (a java.io.BufferedOutputStream)
    mypackage.myMethod()

我的直接假设是ObjectWrite正在获取block.But,这种行为充其量是不稳定的。底层网络看起来没问题。在被卡住之前,它已经成功地写了几个小时。

在写入下一个块之前,线程也需要至少50ms的休息时间。因此,如果它不是普通的块,它还可能是什么呢?

pstack:

代码语言:javascript
复制
ff2cba60 send     (10, 4dc230, c312, 0)
fe03ce58 Java_java_net_SocketOutputStream_socketWrite0 (3a4928, c312, 10, 95f7f890, 0, c312) + 158
fc093e5c * java/lang/System.getSecurityManager()Ljava/lang/SecurityManager;+3
fc08ec3c * *java/net/SocketOutputStream.socketWrite([BII)V [compiled] +45
fc08ec3c * *java/net/SocketOutputStream.write([BII)V+5
fc005ab0 * java/io/BufferedOutputStream.write([BII)V+20
fc005ab0 * mypackage.mymethod()V+84 (line 598)
EN

回答 1

Stack Overflow用户

发布于 2013-04-12 19:59:58

我怀疑问题是你的服务器读得不够快,所以TCP发送缓冲区被填满了。TCP有一些算法可以帮助它确定何时发送数据包,它主要基于传输的当前状态。因此,如果TCP堆栈检测到拥塞(因为您正在发送大量数据,而服务器没有跟上)。它会减慢/暂停。有关更多信息,请阅读this

我没有现成的答案来解决这个问题,因为您共享的都是堆栈跟踪,但如果我是您,在这种情况下,我会查看服务器而不是客户端。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15970710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档