我有一个Ignite 5客户机+1服务器集群,客户机从网络接收请求并将请求发送到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,状态是一致的,甚至在本地,槽到调用程序的impl。使用信号量(低并发级别);
同时粘贴jstack:
请在这里检查一下
https://textsave.de/text/E5yRP0iEqSxkzwqw