TimeOut exception when using Reactive Application; however with same load and Spring MVC stack it works fine

Test Setup: Same application developed in SprinMVC as well as Spring WebFlux / Reactor.

Scenario 1: Spring MVC, Couchbase EE 6.0.1
Load Test: 2000 users per second for 5 minutes via Jmeter terminal

Scenario 2: Spring WebFlux, Reactor, Couchbase EE 6.0.1
Load Test: 2000 users per second for 5 minutes via Jmeter terminal

Scenario 1 works fine without any errors, howeve Scenario 2, ie. Spring Reactor, TimeOut Exception is thrown as shown below:

java.util.concurrent.TimeoutException: {“b”:“items”,“s”:“n1ql”,“t”:75000000,“i”:“ebd03db1-32cd-4a5f-a291-69f48d7121b8”}
at com.couchbase.client.java.bucket.api.Utils$1.call(Utils.java:131) ~[java-client-2.7.4.jar!/:na]
at com.couchbase.client.java.bucket.api.Utils$1.call(Utils.java:127) ~[java-client-2.7.4.jar!/:na]
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140) ~[rxjava-1.3.8.jar!/:1.3.8]
at rx.internal.operators.OnSubscribeTimeoutTimedWithFallback$TimeoutMainSubscriber.onTimeout(OnSubscribeTimeoutTimedWithFallback.java:166) ~[rxjava-1.3.8.jar!/:1.3.8]
at rx.internal.operators.OnSubscribeTimeoutTimedWithFallback$TimeoutMainSubscriber$TimeoutTask.call(OnSubscribeTimeoutTimedWithFallback.java:191) ~[rxjava-1.3.8.jar!/:1.3.8]
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) ~[rxjava-1.3.8.jar!/:1.3.8]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_201]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_201]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_201]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_201]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_201]

The numbe of records fetched from DB is same for both scenarios. The data is indexed as well.
The question is why the MVC flavor doesn’t run into CouchBase timeout exceptions and why is Reactive app only seeing these issues.
For MVC error % is 0% but for Reactive error % is 0.40% (378 errors for a sample of 98K requests)
In the next set of test, I increased the data in DB and then MVC had 0.89% errors whereas Reactive had 6% errors.
Is there a way to reduce the couchbase threads to 1. e.g. Visual VM shows 3 threads for cb-io, 2 threads for cb-core, 3 threads for cb-computations.
Since, I am running on a EC2 with 1 core, should I reduce these threads to 1. If yes then please tell the config as well to do so.

Can you show us some code? What does your reactive pipeline look like?

MVC code: https://github.com/vrawat79/itemMVC
Reactive code: https://github.com/vrawat79/itemReactive