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
