Need Advice on Setting timeouts for DB

I have a Single Standalone DB (APOC enabled). There are some UI pages which will pull the data from the DB and then render in the UI.

In order to prevent any cypher from running more than the timeouts in UI, there was a global timeout config set using dbms.transaction.timeout at 30 seconds.

  1. is that the recommended way, or should the cyphers be run in timebox using APOC, or run a script in the background to pick up the long running query and kill them ?
  2. This db also handles ingestion from 2 to 10 different java clients at any given time depending on the ingestion load (auto scales). All the required recommendations of inserting data into neo4j (using unwind with apoc.create and apoc.merge) has been implemented, but due to timeouts we have kept the batch size to 100 and this insertion for large data sets is taking long time compared to other dbs in the data pipeline, should the batch size be increased?
  3. Will there be negative impact if the timeout are removed/increased, ie a single query (either insertion or query) could be consuming too much memory or CPU thus starving any other parallel cypher that is being run at the same time and causing it to become slow?