4

我有一个可以发送任何大小的响应的服务器。当我以 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

4

0 回答 0