[MWy] JMS - OutOfMemoryError
Zbyněk Jiráček
JBI at seznam.cz
Tue Apr 9 16:46:14 CEST 2013
Dobré odpoledne,
narazil jsem při řešení úkolu číslo 3 na problém s vlákny. Při testování své
banky a klientů, při použití více než dvou klientů záhy začnu obdržovat
výjimky OutOfMemoryError, vždy při vytváření nějakého vlákna uvnitř
ActiveMQ. Po chvíli už pak nejde spustit žádného nového klienta, ani žádnou
jinou aplikaci v javě (např. eclipse) s následující, nebo podobnou hláškou:
Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
at java.lang.ref.Reference.<clinit>(Reference.java:145)
Když ukončím některé klienty, tak se to zase vrátí do normálu, zkrátka to
působí, jako že aplikace používá velké množství vláken, která navíc při běhu
přibývají. To se mi potvrdilo, když jsem si příkazem "ps -eLf | grep java"
nechal vypisovat vlákna JVM. S každým novým klientem se vytváří tak 30-50
vláken, částečně v brokeru, částečně v samotném klientovi. To se mi zdá
strašně moc. Zkoušel jsem stejný experiment i s čistou implementací, kterou
jsem si stáhnul z webu. Tam vlákna s novými klienty přibývají o něco méně,
ale při spuštění sedmého klienta už jsem obdržel hlášku výše.
A tak bych se chtěl zeptat, je něco divně u mě, nebo je prostě normální, že
JMS potřebuje desítky vláken na každého klienta? Stejně tak jako to, že
systém při zhruba 170 běžících vláknech JVM (celkem v systému jich je kolem
400) odmítne vytvářet další. Nebo je chyba někde jinde? (v poskytnuté
implementaci banky a klientů, v nastavení ActiveMQ?). Přijde mi totiž, že
framework, který zvládne max. pár klientů, by nebyl dvakrát užitečný.
Děkuji za reakce
Zbyněk Jiráček
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://d3s.mff.cuni.cz/pipermail/nswi080/attachments/20130409/629e12dd/attachment.html>
More information about the NSWI080
mailing list