连接在java中由peer重置

时间:2014-08-18 11:51:33

标签: java php xampp tomcat7 jersey-2.0

情景: -

客户端应用程序 - 基于JavaScript

前端处理 - 使用XAMPP在Apache上托管的PHP(php 5.3.8,xampp 1.7.7,Apache 2.2.21)

后端处理 - 托管在Tomcat上的Java REST API

描述

浏览器将发布数据发送到php服务器,php验证并根据需要修改发布数据,然后使用curl打开与后端服务器(tomcat服务器托管Jersey REST API)的连接,然后返回响应将php返回的内容发送到浏览器。

我面临的问题: -

Tomcat服务器大约需要3到10分钟来处理请求(取决于有效负载和请求类型,有效负载越高,执行时间就越多)。当调用更高的有效负载请求或计时请求(7-10分钟)API时,会发生套接字异常,说明在tomcat托管的REST API(后端)上“通过对等方重置连接”。前端处理php逻辑没有任何反应。由于连接被重置,因此Java REST API无法发送响应,因为php上没有任何事情发生,因此无法纠正发生的任何事情。

现在,如果通过REST客户端(Chrome扩展程序)进行相同的耗时或有效负载API调用,则API会正常处理并将响应返回给REST客户端。所以它归结为php或Apache前端的任何问题。

已经尝试: 在httpd-default.conf中 -

KeepAlive on

超时2100

KeepAliveTimeout到2100

在php curl调用 -

curl_setopt($ch, CURLOPT_TIMEOUT,0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,20);
or 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,20);
curl_setopt($ch, CURLOPT_HTTPHEADER, 
                array('Content-Type: application/json ',
                    'Content-length: '.$len,//length of content
                    'Connection: keep-alive',
                    'Keep-Alive: 2100'));
set_time_limit(0);
xdebug关掉了 default_socket_timeout = 2100

并且已经玩了很多组合,但没有成功的结果。

注意 - Apache和Php日志文件中没有任何内容或Php脚本中发生任何异常,所以我甚至无法深入研究问题的来源。

修改

我注意到即使是ajax也没有出现任何错误,只需继续等待。如果Apache正在重置连接,那么ajax也应该收到连接重置错误。

0 个答案:

没有答案