首页 > 编程知识 正文

第三人案例,如何提出具体的请求例子

时间:2023-05-04 23:59:31 阅读:161828 作者:4941

问题说明最近,Java APP应用服务器在生产环境中多次挂起。

从问题分析堆栈中可以看出大量的线程挂起了

at Java.net.socket output stream.socket write0(native method ) at Java.net.socket output stream.socket write ) socketoutput

httpurlconnectionurlcon=(httpurl connection ) url.openConnection ); urlcon.setconnecttimeout(30000; urlcon.setreadtimeout(30000; 通常,阻止在套接字上的write很少见,也没有用于设置写入超时的api。 从业务来看,主要是通过http将图像数据发送到平台g进行图像识别,但是图像数据基本上需要几十k到几百k的情况下,就有可能发生这种情况。

为了提高效率,插座有读写缓冲区。 套接字调用write时,首先将数据写入本地写入缓冲区,然后底层tcp协议将数据传输到另一个读取缓冲区以释放写入缓冲区。 如果数据太大且写入缓冲区未充分写入,则可能需要等待。 如果端到端数据没有及时处理,此wrtie可能会被屏蔽很久。

遗憾的是,java的典型套接字没有提供写入超时设置参数,因此在设计上必须仔细考虑传输大量数据。 但是,幸运的是可以考虑用nio来处理。 例如,可以使用httpclient4.x的异步http调用来避免这些write块。 参数设置为:如下所示

privaterequestconfigrequestconfig=request config.custom ().setsockettimeout ) socket_timeout读取/写入超时.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。