The setting in topology configs are suppose to be topology specific. When you 
set WORKER_CHILDOPTS those values are read by supervisor and passed to worker 
command when starting worker processes. However, SUPERVISOR_CHILDOPTS will have 
no effect as supervisors are already  running and when they were started they 
read the value provided in storm.yaml and used that for Xmx setting. A single 
supervisor will be responsible for more than one topology so it makes sense 
that SUPERVISOR_CHILDOPTS are not topology specific.

Thanks
Parth

From: Martin Illecker <[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Date: Tuesday, March 3, 2015 at 8:17 AM
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: Setting heap size parameters by workers.childopts and 
supervisor.childopts

Hello,

I had a heap size problem within the prepare method of my bolts.
Therefore, I tried to increase the heap size by setting the values in the 
topology config:


conf.put(Config.WORKER_CHILDOPTS, "-Xmx4g");

conf.put(Config.SUPERVISOR_CHILDOPTS, "-Xmx4g");

But the out of memory exception remained!
I checked the worker node and the supervisor processes were still executed with 
"-Xmx768m".

In the next step I set the same values globally in the storm.yaml and restarted 
the supervisor.
Now the supervisor uses the "-Xmx4g" parameter and the out of memory exception 
was gone.

I'm just wondering why it makes any difference to set these parameters globally 
in the storm.yaml or in the topology config?
Why are the settings in the topology config not working?
Furthermore the Storm UI shows the correct parameters but they are not used by 
the supervisor.

Thanks!
Martin

Reply via email to