Мой вопрос следует за этим вопросом.
Сервер зависает в случайное время, и каждый раз, когда я нажимаю ctrl + c один разна сервере выдает несколько исключений, и после этого все возвращается в нормальное состояние.
Иногда кажется (не всегда), что кто-то отправляет запрос с неверными входами или end-point
ответ с неверным сервером вывода зависает инажатие ctrl + c сервер отбрасывает этот запрос и начинает обрабатывать другие заблокированные запросы.
Поэтому я думаю, что мне нужно установить что-то вроде, если запрос не отвечаетнапример, 1 минута не зависает и просто отбрасывает этот запрос.
Я нашел HTTP Transport Properties в документации ESB.Но значение NO_KEEPALIVE недостаточно документировано, и я не уверен в его поведении.
Я спрашиваю, является ли значение NO_KEEPALIVE
правильным в этом случае или нет.
Если в этой ситуации лучше использовать другой подход, то он также приветствуется.
Код:
<resource methods="POST" uri-template="/register">
<inSequence>
<property description="Store Token" expression="$trp:Authorization" name="token" scope="default" type="STRING"/>
<property description="Store JSON" expression="json-eval($.)" name="json" scope="default" type="STRING"/>
<property description="Store MessageId" expression="get-property('MessageID')" name="MESSAGE_ID" scope="default" type="STRING"/>
<dbreport description="log request">
<connection>
<pool>
<dsName>jdbc/dc</dsName>
</pool>
</connection>
<statement>
<sql><![CDATA[INSERT INTO Request (Service, Action, JSON, Requestor, MessageId) values (?,?,?,?,?);]]></sql>
<parameter type="VARCHAR" value="ServiceV3"/>
<parameter type="VARCHAR" value="Register"/>
<parameter expression="get-property('json')" type="VARCHAR"/>
<parameter expression="get-property('token')" type="VARCHAR"/>
<parameter expression="get-property('MESSAGE_ID')" type="VARCHAR"/>
</statement>
</dbreport>
<payloadFactory media-type="json">
<format>{"value":"$1"}</format>
<args>
<arg evaluator="json" expression="$.port"/>
</args>
</payloadFactory>
<property description="Force HTTP 1" name="FORCE_HTTP_1.0" scope="axis2" type="STRING" value="true"/>
<property description="Authorization" expression="get-property('token')" name="Authorization" scope="transport" type="STRING"/>
<send>
<endpoint key="Register"/>
</send>
</inSequence>
<outSequence>
<property description="Store JSON" expression="json-eval($.)" name="json" scope="default" type="STRING"/>
<dbreport description="log response">
<connection>
<pool>
<dsName>jdbc/dc</dsName>
</pool>
</connection>
<statement>
<sql><![CDATA[INSERT INTO Response (Service, Action, Requestor, JSON, MessageId) values (?,?,?,?,?);]]></sql>
<parameter type="VARCHAR" value="ServiceV3"/>
<parameter type="VARCHAR" value="Register"/>
<parameter expression="get-property('token')" type="VARCHAR"/>
<parameter expression="get-property('json')" type="VARCHAR"/>
<parameter expression="get-property('MESSAGE_ID')" type="VARCHAR"/>
</statement>
</dbreport>
<send/>
</outSequence>
<faultSequence>
<payloadFactory description="Error" media-type="json">
<format>{"Message":"Error"}</format>
<args/>
</payloadFactory>
<send/>
</faultSequence>
</resource>
Журналы ошибок:
Эта ошибка возникла несколько раз.часто и, наконец, на 17:53
сервер зависал без каких-либо дополнительных журналов:
TID: [-1234] [] [2019-06-24 17: 53: 24,643] ОШИБКА {org.apache.synapse.core.axis2.Axis2Sender} - неожиданная ошибка при отправке сообщения {org.apache.synapse.core.axis2.Axis2Sender} org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: неожиданный символCOMMA в org.apache.axiom.om.impl.builder.StAXOMBuilder.next (StAXOMBuilder.java:296)
На следующий день в 11:14
, когда я нажал ctrl + c все пришло в норму.И огромное количество заблокированных запросов начало обрабатываться.Первый журнал ошибок в то время был таким, и обычно появляется это сообщение warn
.Я не уверен, имеет ли это какое-либо отношение к серверу замораживания.
[2019-06-25 11: 14: 41,147] WARN {org.apache.synapse.transport.passthru.SourceHandler}- Тайм-аут соединения после прочтения запроса: http-входящий-1522 Тайм-аут сокета: 180000 Удаленный адрес: /...:***** {org.apache.synapse.transport.passthru.SourceHandler}