You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@manifoldcf.apache.org by Artem Abeleshev <ar...@rondhuit.com> on 2023/02/06 05:05:13 UTC

Performance problems

Hi everyone!

I've struggling with the performance problem already for the couple of
weeks. We have two environments:

- `dev` with 2 nodes of ManifoldCF agent + 1 node of Zookeeper
- `prod` with 4 nodes of ManifoldCF agent + 3 node of Zookeeper

ManifoldCF agent settings are identical at the moment, we have expicitly
indicated following settings:

- 200 db handles (`org.apache.manifoldcf.database.maxhandles`)
- 100 worker threads (`org.apache.manifoldcf.crawler.threads`)
- 10 expire threads (`org.apache.manifoldcf.crawler.expirethreads`)
- 10 cleanup threads (`org.apache.manifoldcf.crawler.cleanupthreads`)
- 10 document delete threads (`org.apache.manifoldcf.crawler.deletethreads`)

(but I have tried prod with various configs, the result is the same)

In the Postgres config, at the moment we have `max_connections` of `840`
and `shared_buffers` of `244559`.

I have a job that is runninhg really slowly on production evironment in
comparing to the development environment. I have monitored the JVM using
VisualVM and noticed that all worker threads almost all the time spending
in `WAITING` or `TIMED_WAITING` statuses. I grabbed a lot of threadudmps
and almost every time I found worker threads are waiting on `LockGate`.
What can be the possible cause of it and what I can do with that?

Another thing that makes threads sleep for a long time is a concurrent
modification failures caused by PostgreSQL due to the usage of
`SYNCHRONIZED` isolation level. After failure thread is send to sleep for a
random time up to `60000` millis. It is made by design, but is there a way
to reduce amount of these failures?

I will be grateful for any hints or ideas.

Thank you!

With respect,
Abeleshev Artem