Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
3.3.0
-
None
-
None
Description
After a long period (almost 5days)of parallel requests(almost 200 request per second),client.submit blocked for scriptEvaluationTimeout configured,and return timeout.At the same time,many TCP connections in Gremlin Server are in CLOSE_WAIT state.
Here is my usages:
cluster = Cluster.build(FileUtils.toFile(config)).create();
client = cluster.connect();
ResultSet resultSet = null;
synchronized (Service.class)
CompletableFuture<List<Result>> future = null;
List<Result> results = null;
future = resultSet.all();
results = future.get();
The code snippet above runs in a java web app based on SpringMVC.I found a PR related to my question.
In this PR,the author seems to say gremlin doer not support high concurrency。
Removed recommendations for submitting parallel requests on a session from docs.
So,I submit the gremlin script in order(use synchronized keyword,just as my code snippet ).But in order to lift throughput,I do not lock the code for getting result from Gremlin Server。I want to know some details about how Gremlin Server receive and process requests,such as the receiver and executor threads are the same one?If so ,the Gremlin server can only process the requests one by one ?
I wonder whether or not Gremlin supports high concurrency(such as 200 second per second,including simple vertex or edge queries and complex combinatorial queries).If so,please help to find out why the process time for a simple script such as query vertex exceed scriptEvaluationTimeout. If not,is there other ways to make Gremlin Server support high concurrency,such as multi-gremlinserver。
Thank you sincerely for your help。