-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Default worker childopts: GC logging, IPv4, -server; fixes #492 #632
base: master
Are you sure you want to change the base?
Conversation
mrflip
commented
Jul 21, 2013
- Enable verbose GC tuning into {storm.home}/logs/gc-worker.log.N, capped at 100k
- added a new childopts interpolant, '%STORMHOME%', set to storm.home property at runtime.
- put example production childopts in the storm.yaml.example
- Added the 'preferIPv4Stack' setting, to make storm not bind to ipv6 interfaces by default
Are you sure these GC settings should be default? What are the performance implications of this? This can easily be manually set by users. The %STORMHOME% feature addition is fine, I'd like to merge that in as a separate pull request. Likewise for the preferIPv4Stack setting. |
* Enable verbose GC tuning into {storm.home}/logs/gc-worker.log.N, capped at 100k * added a new childopts interpolant, '%STORMHOME%', set to storm.home property at runtime. * put example production childopts in the storm.yaml.example * Added the 'preferIPv4Stack' setting, to make storm not bind to ipv6 interfaces by default
The fancypants jvm options are commented out -- I'm only enabling the gc logging settings, ipv4 and server mode. The system shouldn't be doing new-gen GC's more than once every few seconds, so verbosity of GC logging shouldn't be an issue. I'll move the "production" options to the wiki, and separate this pull request into pieces as requested. Each of the candidate settings is described below, so please recommend additional ones to include.
Performance and Memory settings:
|
(I don't know if you need more convincing, but a recent thread on the list -- mysterious death of a worker on prepare() that turned out to be a heap blowout -- really convinces me that the default settings for development should have GC logging turned to max. If something like that is invisible to a clearly quite competent dev, then there's little chance folks will naturally suspect they're leaking fast data into the old-gen causing repeated avoidable major GCs) |
I don't know if all the GC settings mentioned in here should be on by default for production but for dev mode it definitely is helpful. Maybe we could even make it easy to provide a flag when running the java command to run the most verbose level of GC logging on production too (if needed). I agree that with mrflip that verbose GC logging did help me figure out a memory-leak in one of my topologies which could only be simulated on production after the topology ran for over 4-6 hours. |