2016-11-02 5 views
1

Я получаю следующую ошибку при генерации нескольких клиентов в Apache Ignite с использованием Jmeter. Каким должен быть размер кучи при запуске клиентов Apache Ignite? Я попытался сохранить его более 512 МБ, но я все равно получаю такую ​​же ошибку.Ошибка при создании нескольких клиентов в Apache Ignite

Nov 02, 2016 6:54:20 PM org.apache.ignite.logger.java.JavaLogger error 
 
SEVERE: Got exception while starting (will rollback startup routine). 
 
java.lang.OutOfMemoryError: unable to create new native thread 
 
     at java.lang.Thread.start0(Native Method) 
 
     at java.lang.Thread.start(Thread.java:714) 
 
     at org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor.start(GridTimeoutProcessor.java:71) 
 
     at org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1589) 
 
     at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:839) 
 
     at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1739) 
 
     at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1589) 
 
     at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1042) 
 
     at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:569) 
 
     at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:516) 
 
     at org.apache.ignite.Ignition.start(Ignition.java:322) 
 
     at ignite_client_jmeter.runTest(ignite_client_jmeter.java:1404) 
 
     at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:196) 
 
     at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:465) 
 
     at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:410) 
 
     at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:241) 
 
     at java.lang.Thread.run(Thread.java:745)

ответ

1

Прежде всего, эта ошибка не о динамической памяти, это указывает на то, что вы начали больше потоков в рамках одного процесса, что позволило ОС. В Linux вы можете играть с ulimit, чтобы преодолеть эту проблему.

Во-вторых, похоже, что вы запускаете несколько клиентов в одной JVM, что является плохой практикой. Экземпляр Ignite является потокобезопасным и может использоваться несколькими потоками одновременно. Поэтому лучше создать один клиент на JVM, а затем использовать его для всех ваших взаимодействий с кластером.

+0

Увеличение количества пользовательских процессов с использованием ** ulimit -u ** решена моя проблема. У меня есть другой вопрос: есть ли какой-нибудь инструмент, с помощью которого я могу запускать несколько клиентов с отдельными JVM? (В настоящее время я использую Jmeter) – rishi007bansod