Ошибка при создании нескольких клиентов в Apache Ignite

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

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)


person rishi007bansod    schedule 02.11.2016    source источник


Ответы (1)


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

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

person Valentin Kulichenko    schedule 02.11.2016
comment
Увеличение количества пользовательских операций с использованием ulimit -u ‹value› решило мою проблему. У меня еще один вопрос: есть ли какой-нибудь инструмент, с помощью которого я могу запускать несколько клиентов с отдельными JVM? (В настоящее время я использую Jmeter) - person rishi007bansod; 03.11.2016