Orbeon服务器在压力下给出不同的响应



我在压力测试期间遇到了一个非常奇怪的问题。

这是一个搜索表单,用户在弹出窗口中搜索对象,选择它(单击复选框),验证(弹出窗口中的触发器),然后在主页上复制选择。

这通常有效。但是,当 orbeon 承受很大压力(许多客户端同时执行此操作)时,服务器响应有时会有所不同。

如果用户在验证选择之前等待两秒钟,则它有效。

请求:

<!DOCTYPE xxforms:event-request [<!ENTITY nbsp "&#160;">]>
<xxforms:event-request xmlns:xxforms="http://orbeon.org/oxf/xml/xforms">
    <xxforms:static-state>pers:C9B10DD4-DD1B-11F4-907F-1102C7BD8015</xxforms:static-state>
    <xxforms:dynamic-state>pers:67DD2321-B039-300B-F048-6FE05A18E044</xxforms:dynamic-state>
    <xxforms:action>
        <xxforms:event name="DOMFocusOut" source-control-id="xf-12$advancedSearchControl$basic-input"></xxforms:event>
        <xxforms:event name="DOMFocusIn" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1"></xxforms:event>
        <xxforms:event name="xxforms-value-change-with-focus-change" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1">197552cfa69416449f209b70ba3f8bb6@domain.com</xxforms:event>
    </xxforms:action>
</xxforms:event-request>

响应:

<?xml version="1.0" encoding="utf-8"?>
<xxf:event-response xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
    <xxf:dynamic-state>pers:415194AF-12B7-C579-5A81-98D7935D5001</xxf:dynamic-state>
    <xxf:action>
        <xxf:control-values>
            <xxf:control id="xf-12$displaySearchResults$selected-input-multiple">
                        197552cfa69416449f209b70ba3f8bb6@domain.com
                        197552cfa69416449f209b70ba3f8bb6@domain.com
            </xxf:control>
            <xxf:control id="xf-12$displaySearchResults$datatableMultiple$mainselect•1">
                197552cfa69416449f209b70ba3f8bb6@domain.com</xxf:control>
            <xxf:control id="xf-12$xf-49" readonly="false"/>
        </xxf:control-values>
    </xxf:action>
</xxf:event-response>

但是,如果用户等待 5 秒。相同的请求、不同的响应和选择不会在主页中报告。

请求:

<!DOCTYPE xxforms:event-request [<!ENTITY nbsp "&#160;">]>
<xxforms:event-request xmlns:xxforms="http://orbeon.org/oxf/xml/xforms">
    <xxforms:static-state>pers:C9B10DD4-DD1B-11F4-907F-1102C7BD8015</xxforms:static-state>
    <xxforms:dynamic-state>pers:57740724-BFBE-D1FB-C7D4-2E586711B13B</xxforms:dynamic-state>
    <xxforms:action>
        <xxforms:event name="DOMFocusOut" source-control-id="xf-12$advancedSearchControl$basic-input"></xxforms:event>
        <xxforms:event name="DOMFocusIn" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1"></xxforms:event>
        <xxforms:event name="xxforms-value-change-with-focus-change" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1">197552cfa69416449f209b70ba3f8bb6@domain.com</xxforms:event>
    </xxforms:action>
</xxforms:event-request>

响应:

<?xml version="1.0" encoding="utf-8"?>
<xxf:event-response xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
    <xxf:dynamic-state>pers:67DD2321-B039-300B-F048-6FE05A18E044</xxf:dynamic-state>
    <xxf:action>
        <xxf:control-values>
            <xxf:control id="xf-12$displaySearchResults$datatableMultiple$mainselect•1"/>
        </xxf:control-values>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_231_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$xf-229" observer-id="xf-12$displaySearchResults$datatableMultiple$xf-229"/>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_256_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$repeat-header" observer-id="xf-12$displaySearchResults$datatableMultiple$repeat-header"/>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_205_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$fr-dt-group" observer-id="xf-12$displaySearchResults$datatableMultiple$datatableMultiple-container"/>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_231_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$xf-229" observer-id="xf-12$displaySearchResults$datatableMultiple$xf-229"/>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_256_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$repeat-header" observer-id="xf-12$displaySearchResults$datatableMultiple$repeat-header"/>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_362_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$line-repeat" observer-id="xf-12$displaySearchResults$datatableMultiple$line-repeat"/>
        <xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_362_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$line-repeat" observer-id="xf-12$displaySearchResults$datatableMultiple$line-repeat"/>
        <xxf:setfocus control-id="xf-12$advancedSearchControl$basic-input"/>
    </xxf:action>
</xxf:event-response>

如果失败,第二次重复操作将再次失败,第三次就可以了。

测试器

是一种客户工具,可自动向服务器发出请求,但如果手动尝试操作(当服务器受到测试器的压力时),也会出现问题。

自动测试期间很难判断它何时发生,但是在服务器繁忙时手动执行此操作,结果是系统的。

  • 如果您直接验证它有效,如果您等待大约 5 秒它会失败
  • 如果失败,
  • 则失败两次,在第三次上工作

那么,什么可以让服务器回答不同呢?我可以猜到正确的响应会做什么,这看起来像是它应该做什么。

我不知道错误的响应应该是什么,我的表单或 xbls 中的任何地方都没有操作。

我能做些什么来解决这个问题,或者至少找到有关正在发生的事情的更多信息?

Orbeon 版本: 3.8.0.201005141856 CE

很抱歉不得不说以下内容,因为它不是很有帮助,但由于我们谈论的是将近 5 年的 Orbeon Forms 版本,因此很难弄清楚。该版本中可能存在错误,从那时起(希望)已在该软件的许多版本中得到修复。

由于该软件是开源的,因此您可以获取源代码并尝试调试,尽管它可能有点挑战性,因为它是一款非常重要的软件。

最新更新