У меня есть многопоточное Java-приложение с моими ~ 5 потоками (а также многими потоками с веб-сервера Jetty), некоторые из них время от времени читают / пишут mongodb.Некоторые записи интенсивны, когда я читаю 200K mongodb объектов, но они не происходят непрерывно, они происходят раз в несколько минут.Несколько часов приложение работает отлично, но позже я вижу такую ситуацию:
![enter image description here](https://i.stack.imgur.com/qXh25.png)
Монго не выполняет никакой работы, насколько я понимаю:
![enter image description here](https://i.stack.imgur.com/r4JVw.png)
Вот мой вывод jstack:
https://gist.github.com/stiv-yakovenko/06b0d235fd2c32d839788edf56aaa6cd
Вы можете видеть, что все темыждет одного потока, который, в свою очередь, ожидает монго, в то время как монго ничего не делает .До возникновения проблем здоровая ситуация такова, что никто больше не ждет потоков, потому что нагрузка не так высока, чтобы все блокировать.До mongo я использовал mapdb для хранения одних и тех же данных, и у меня никогда не возникало подобных проблем.
Я видел такую же ситуацию с несколькими потоками, ожидающими mongo, поэтому я решил поместить все вызовы mongodb в один ReentrantLock (правда).Я надеялся, что rootcause - слишком много потоков, которые хотят получить доступ к Монго, но это не помогает.Я не знаю, что делать, пытался воспроизвести проблему простым кодом, но не могу.Любые идеи?
UPD: вот вывод jstat как один из запрошенных комментариев:
![enter image description here](https://i.stack.imgur.com/j0CxJ.png)