/ / Akka správy všetky zastaviť naraz - scala, akka

Akka správy všetko zastaviť naraz - scala, akka

Mám tento vtipný problém a nedokážem túto záležitosť identifikovať.

Mám túto "jednoduchú" aplikáciu akka. Jeho hlavným cieľom je prechádzať každý dokument do databázy.Môj hlavný herec požaduje riadky jedinému hercovi, ktorý komunikuje s databázou.Každý získaný dokument je vrátený môjmu hlavnému hercovi.Pri dávkach sú tieto dokumenty pridané do správy frontu spravovanú vyrovnávajúcim dispečerom, malí pracovníci prejdú nad nimi a usporiadajú ich.

Po niekoľkých hodinách, zvyčajne medzi 2 a 4, všetci herci zastavia súčasne, až do 5 sekúnd.

Zaujímalo by ma, či niekto z vás videl niečo podobné.

Pre informáciu:

  • Používam AkkA 2.2.0
  • Nepoužívajte žiadne otázky, len povedzte
  • Nepoužívam žiadne spôsoby uzamknutia vlákien, ako napríklad čakanie
  • DeadLetters sú dôvody, prečo viem, že všetko sa vypne

Ďakujem za tvoju pomoc


Z DeadLetters sa zdá, že len herci v súvislosti s mojim vyvažujúcim dispečerom / mojim okrúhlym smerovačom sa zastavia. Bolo by niečo, čo mi chýbalo?

Moja škala

val workers: ActorRef = context.system.actorOf(
Props(new WorkerActor)
.withRouter(FromConfig())
.withDispatcher("balancing-dispatcher"),
"round-robin"
)

Môj konfiguračný kód

balancing-dispatcher {
type = BalancingDispatcher
executor = "fork-join-executor"
}

akka.actor.deployment {
/round-robin {
router = round-robin
nr-of-instances = 50
resizer {
lower-bound = 10
upper-bound = 100
}
}
}

odpovede:

1 pre odpoveď č. 1

Najprv by som použil profilovací nástroj ako naprjconsole alebo jvisualvm na kontrolu problémov s pamäťou, GC a / alebo fork +. Máte dostatok haldy? Zaznamenávajte aj počet závitov a stavy závitov (existujú vlákna, keď sa spomalí?)

Možno budete musieť nakonfigurovať viacvlákna v bazéne Akka, alebo že ste dosiahli hornú hranicu 100 inštancií a že sú všetci zaneprázdnení. Môžete podtriedu implementácie DefaultResizer poskytnúť explicitné oznamovanie / zaznamenávanie aktivity resizer a nakonfigurovať svoju podtriedu ako resizer.