我有一个可以发送任何大小的响应的服务器。当我以 1MB 的响应大小进行调用时,WSO2 api 管理器工作正常。(每分钟 1000 个请求)当我们以 10MB 的响应大小进行相同的调用时,WSO2 api 管理器最初会减少响应的大小,最后变成 0 大小的响应。每分钟 1000 个请求只有前 28 个请求响应,其他 10MB 的大小较小。我尝试使用 10MB 响应大小直接访问后端服务,所有响应都是 10MB。
这是我的 server.js(为 nodejs 编写)
var http = require("http");
var url = require('url');
var server = http.createServer(function(request, response) {
var params = url.parse(request.url, true).query;
var size = parseInt(params.size);
var buffer = new Buffer(size);
buffer.fill("a");
response.write(buffer.toString());
response.end();
});
server.listen(8083);
console.log("Server is listening");
WSO2 使用参数大小访问此服务器。
我的直接 http 调用看起来像
wget http://A.B.C.D:8083/?size=10485760
我的 WSO2 通话看起来像
wget --header="Authorization: Bearer Xobzt7lefiMadwt4u4Vp9q93dR8a" -qO- http://E.F.G.H:8280/loadtest/1.0/?size=10485760
日志显示堆栈跟踪的错误
java.lang.IllegalStateException:I/O 反应器已关闭 在 org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.connect(DefaultConnectingIOReactor.java:229) 在 org.apache.synapse.transport.nhttp.HttpCoreNIOSender.sendAsyncRequest(HttpCoreNIOSender.java:366) 在 org.apache.synapse.transport.nhttp.HttpCoreNIOSender.invoke(HttpCoreNIOSender.java:252) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 在 org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:185) 在 org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:167) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) 在 org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:460) 在 org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:57) 在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:325) 在 org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:329) 在 org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59) 在 org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:95) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) 在 org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:112) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) 在 org.apache.synapse.rest.Resource.process(Resource.java:297) 在 org.apache.synapse.rest.API.process(API.java:308) 在 org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76) 在 org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63) 在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:191) 在 org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 在 org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:144) 在 org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:139) 在 org.apache.synapse.transport.nhttp.util.RESTUtil.processGetAndDeleteRequest(RESTUtil.java:146) 在 org.apache.synapse.transport.nhttp.DefaultHttpGetProcessor.processGetAndDelete(DefaultHttpGetProcessor.java:464) 在 org.wso2.carbon.transport.nhttp.api.NHttpGetProcessor.process(NHttpGetProcessor.java:296)
紧随其后的是
[2013-11-16 17:25:12,679] INFO - LogMediator To:,MessageID:urn:uuid:aec86528-8132-4329-9262-9204a9f1317c,方向:响应,状态 = 执行默认“故障”序列,ERROR_CODE = 504 , ERROR_MESSAGE = 发送超时, Envelope: 0Status reportRuntime ErrorUnexpected error during send message out