各位大神,在开发REST接口后,做压力测试时调用接口,并发稍微高一些就出现以下错误:10:01:44,801 ERROR [TechServiceProxy] Call Service:SYSCONFIG error! And exception:java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader: (HttpClient.java: 774)
at sun.net.www.http.HttpClient.parseHTTP: (HttpClient.java: 633)
at sun.net.www.http.HttpClient.parseHTTPHeader: (HttpClient.java: 771)
at sun.net.www.http.HttpClient.parseHTTP: (HttpClient.java: 633)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream: (HttpURLConnection.java: 1195)
at java.net.HttpURLConnection.getResponseCode: (HttpURLConnection.java: 379)
at com.ucloud.paas.proxy.TechServiceProxy.doCall: (TechServiceProxy.java: 301)
at com.ucloud.paas.proxy.TechServiceProxy.call: (TechServiceProxy.java: 221)
at com.ucloud.paas.proxy.TechServiceProxy.call: (TechServiceProxy.java: 228)
at com.ucloud.paas.proxy.sysconfig.EnumConfigService.getEnumType: (EnumConfigService.java: 49)
at com.unicom.ucloud.eom.commondata.action.CommonDataAction.qryDictData: (CommonDataAction.java: 40)
at sun.reflect.GeneratedMethodAccessor555.invoke: (null: -1)
at sun.reflect.DelegatingMethodAccessorImpl.invoke: (DelegatingMethodAccessorImpl.java: 25)
at java.lang.reflect.Method.invoke: (Method.java: 597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod: (HandlerMethodInvoker.java: 176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod: (AnnotationMethodHandlerAdapter.java: 436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle: (AnnotationMethodHandlerAdapter.java: 424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch: (DispatcherServlet.java: 863)
at org.springframework.web.servlet.DispatcherServlet.doService: (DispatcherServlet.java: 792)
看了服务器的ulimit 及iptables都没有问题,求大神给个方向。并发server
at sun.net.www.http.HttpClient.parseHTTPHeader: (HttpClient.java: 774)
at sun.net.www.http.HttpClient.parseHTTP: (HttpClient.java: 633)
at sun.net.www.http.HttpClient.parseHTTPHeader: (HttpClient.java: 771)
at sun.net.www.http.HttpClient.parseHTTP: (HttpClient.java: 633)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream: (HttpURLConnection.java: 1195)
at java.net.HttpURLConnection.getResponseCode: (HttpURLConnection.java: 379)
at com.ucloud.paas.proxy.TechServiceProxy.doCall: (TechServiceProxy.java: 301)
at com.ucloud.paas.proxy.TechServiceProxy.call: (TechServiceProxy.java: 221)
at com.ucloud.paas.proxy.TechServiceProxy.call: (TechServiceProxy.java: 228)
at com.ucloud.paas.proxy.sysconfig.EnumConfigService.getEnumType: (EnumConfigService.java: 49)
at com.unicom.ucloud.eom.commondata.action.CommonDataAction.qryDictData: (CommonDataAction.java: 40)
at sun.reflect.GeneratedMethodAccessor555.invoke: (null: -1)
at sun.reflect.DelegatingMethodAccessorImpl.invoke: (DelegatingMethodAccessorImpl.java: 25)
at java.lang.reflect.Method.invoke: (Method.java: 597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod: (HandlerMethodInvoker.java: 176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod: (AnnotationMethodHandlerAdapter.java: 436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle: (AnnotationMethodHandlerAdapter.java: 424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch: (DispatcherServlet.java: 863)
at org.springframework.web.servlet.DispatcherServlet.doService: (DispatcherServlet.java: 792)
看了服务器的ulimit 及iptables都没有问题,求大神给个方向。并发server
客户端用HttpURLConnection写的:URL url = new URL(serviceURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
setRequestHeader(httpConn, method, headerParams);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setRequestProperty("Cache-Control","no-cache");
httpConn.setConnectTimeout(CONNECTION_TIMEOUT);
httpConn.setReadTimeout(CONNECTION_TIMEOUT);
if (accept == null) {
accept = "application/json";
}
httpConn.setRequestProperty("Accept", accept);
if (body != null && !body.equals("")) {
DataOutputStream dos = new DataOutputStream(
httpConn.getOutputStream());
dos.writeBytes(body);
dos.flush();
dos.close();
} else {
httpConn.connect();
}两台都是linux机器没有装360
客户端用HttpURLConnection写的:URL url = new URL(serviceURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
setRequestHeader(httpConn, method, headerParams);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setRequestProperty("Cache-Control","no-cache");
httpConn.setConnectTimeout(CONNECTION_TIMEOUT);
httpConn.setReadTimeout(CONNECTION_TIMEOUT);
if (accept == null) {
accept = "application/json";
}
httpConn.setRequestProperty("Accept", accept);
if (body != null && !body.equals("")) {
DataOutputStream dos = new DataOutputStream(
httpConn.getOutputStream());
dos.writeBytes(body);
dos.flush();
dos.close();
} else {
httpConn.connect();
}两台都是linux机器没有装360你这代码都不写完整的 httpConn 不接手服务器的响应,也不关掉。。用
httpConn.disconnect()
客户端用HttpURLConnection写的:URL url = new URL(serviceURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
setRequestHeader(httpConn, method, headerParams);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setRequestProperty("Cache-Control","no-cache");
httpConn.setConnectTimeout(CONNECTION_TIMEOUT);
httpConn.setReadTimeout(CONNECTION_TIMEOUT);
if (accept == null) {
accept = "application/json";
}
httpConn.setRequestProperty("Accept", accept);
if (body != null && !body.equals("")) {
DataOutputStream dos = new DataOutputStream(
httpConn.getOutputStream());
dos.writeBytes(body);
dos.flush();
dos.close();
} else {
httpConn.connect();
}两台都是linux机器没有装360你这代码都不写完整的 httpConn 不接手服务器的响应,也不关掉。。用
httpConn.disconnect()
try {
URL url = new URL(serviceURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
setRequestHeader(httpConn, method, headerParams);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setRequestProperty("Cache-Control","no-cache");
httpConn.setConnectTimeout(CONNECTION_TIMEOUT);
httpConn.setReadTimeout(CONNECTION_TIMEOUT);
if (accept == null) {
accept = "application/json";
}
httpConn.setRequestProperty("Accept", accept);
if (body != null && !body.equals("")) {
DataOutputStream dos = new DataOutputStream(
httpConn.getOutputStream());
dos.writeBytes(body);
dos.flush();
dos.close();
} else {
httpConn.connect();
}
int responseCode = httpConn.getResponseCode();
String str;
InputStream input;
if (responseCode == HttpURLConnection.HTTP_OK) {
input = httpConn.getInputStream();
} else {
input = httpConn.getErrorStream();
}
BufferedReader br = new BufferedReader(new InputStreamReader(input, "utf-8"));
str = br.readLine();
br.close();
httpConn.disconnect(); long endTime = System.currentTimeMillis();
long costTime = endTime - startTime;
if (costTime > 2000) {// cost time more than two second
// send alarm info to CM
}
CallResult cr = new CallResult();
cr.setStatus(responseCode);
cr.setBody(str);
cr.setCosttime(costTime);
//logCallEvent(serviceName, cr, null);
TSProxyLogger.info(startTime/1000,serviceName,serviceURL,responseCode,costTime);
return cr;
} catch (IOException e) {
TSProxyLogger.info(startTime/1000,serviceName,serviceURL,0,0L);
logCallEvent(serviceName, null, e);
throw new PaasException(e);
}是完整的,我没有贴全,额 我不会nodejs 哎 痛苦啊