点燃信号灯不支持高流量?

时间:2018-07-07 20:59:27

标签: apache semaphore ignite

我有一个ignite 5客户端+ 1服务器集群,客户端从网络接收请求并将REQ发送到ignite服务器以进行进一步处理,在我的情况下,我想为传入的请求添加并发限制,我使用如下代码这个:

public boolean handleEntrustRequest(TestEntrustInfo TestEntrustInfo) {

    if(!concurrencySemaphore.tryAcquire()){

        return false;
    }

    try {
        return handleEntrustRequestReal(TestEntrustInfo);
    }finally {

        concurrencySemaphore.release();
    }

}

我尝试将限制号设置为100000,即传入请求没有限制。

在低并发流量(例如大约50〜100)下,代码可以平稳运行, 但是流量较高,我可以看到请求无法正常发送到客户端,请求似乎挂起,然后超时,但是如果我删除了上面的代码 具有1000个并发流量的传入请求可以得到快速处理。

在此链接中: https://cwiki.apache.org/confluence/display/OPENWHISK/2018-02-14+OW+Tech+Interchange+-+Meeting+Notes 我看到了这句话:

  

新的LB,即使在本地,状态也保持一致,调用方隐含的插槽。带有信号灯(并发级别低);

也粘贴jstack: 请在这里检查 https://textsave.de/text/E5yRP0iEqSxkzwqw

1 个答案:

答案 0 :(得分:0)

正如罗曼所说,使用客户特定的信号量足以解决此问题。