My settings for 3000 concurrent used with 1000 active Kraken users on CentOS, VM Ware, <10 % CPU usage, 4 GB memory.
OPENFIRE_OPTS=" -Djava.net.preferIPv4Stack=true -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Xmx2048m -XX:MaxPermSize=192m -XX:NewSize=200m -XX:SurvivorRatio=4 -Xss128k -XX:ThreadStackSize=128 -Dhttps.proxyHost=proxy-europe.my.company -Dhttps.proxyPort=8080 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
#Thread Stack Size reduced from default (512k) to 128k because Openfire is heavy on thread generation, but threads do not need default of 512k
#Set MaxPermSize to 192m since AppDynamics reports more than 80% usage of PS Perm Gen (marked red) for default at 64m
#Garbage collector settings are recommended by Oracle at http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
#-XX:+UseConcMarkSweepGC for “response time is more important than overall throughput and garbage collection pauses must be kept shorter than approximately one second…”
#-XX:+CMSIncrementalMode has to be added to -XX:+UseConcMarkSweepGC to switch incremental mode GC.
#-XX:NewSize=200m -XX:SurvivorRatio=4 to enhance eden and survivor space to 100m and 20m instead of 25m/3m
#Next lines needed to use VisualVM by Oracle to take a look inside of the JVM during operation.
#-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
**For Windows, please review the installation guide **http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/install- guide.html:
Advanced users may wish to pass in parameters to the Java virtual machine (VM) to customize the runtime environment of Openfire. You can do this by creating openfire.vmoptions files in the bin/ directory of your Openfire installation. For the Windows service, you’d create a new text file called openfire-service.vmoptions. Each parameter to the VM should be on a new line of the file. For example, to set the minimum heap size to 512 MB and max VM heap size to 1024 MB, you’d use:
To create parameters for the normal launcher, create a file called openfired.vmoptions (since the openfire.exe launcher invokes the openfired.exe executable to actually start the server)."