Norikra CLI

Command line options of norikra

Norikra CLI options

  norikra start [-Xxxx] [other options]
  -H, [--host=HOST]                                      # host address that server listen []
  -P, [--port=N]                                         # port that server uses [26571]
      [--ui-port=N]                                      # port that Web UI server uses [26578]
  -s, [--stats=STATS]                                    # status file path to load/dump targets and queries [none]
      [--stats-secondary=STATS-SECONDARY]                # status file secondary path, to dump stats with date/time, like "stats.%Y%m%d.json" [none]
      [--suppress-dump-stat], [--no-suppress-dump-stat]  # specify not to update stat file with updated targets/queries on runtime [false]
      [--dump-stat-interval=N]                           # interval(seconds) of status file dumps on runtime [none (on shutdown only)]
      [--shutoff], [--no-shutoff]                        # [EXPERIMENTAL] enable "shutoff" mode, to reject input data under high memory usage
      [--shutoff-threshold=N]                            # threshold percent of heap memory usage to turn "shutoff mode" on
                                                         # Default: 90
      [--shutoff-check-interval=N]                       # interval seconds to turn "shutoff mode" on/off
                                                         # Default: 10
      [--ui-context-path=UI-CONTEXT-PATH]                # Web UI context path
  -d, [--daemonize], [--no-daemonize]                    # daemonize Norikra server [false (foreground)]
  -p, [--pidfile=PIDFILE]                                # pidfile path when daemonized [/var/run/norikra/]
                                                         # Default: /var/run/norikra/
      [--outfile=OUTFILE]                                # stdout redirect file when daemonized [${logdir}/norikra.out]
      [--bare-jvm], [--no-bare-jvm]                      # use JVM without any recommended options
      [--gc-log=GC-LOG]                                  # output gc logs on specified file path
      [--micro], [--no-micro]                            # development or testing (inbound:0, outbound:0, route:0, timer:0, rpc:2, web:2)
      [--small], [--no-small]                            # virtual or small scale servers (inbound:2, outbount:2, route:2, timer:2, rpc:9, web:9)
      [--middle], [--no-middle]                          # rackmount servers (inbound:4, outbound:4, route:4, timer:4, rpc:17, web:17)
      [--large], [--no-large]                            # high performance servers (inbound: 8, outbound: 8, route:8, timer:8, rpc:49, web:49)
      [--inbound-threads=N]                              # number of threads for inbound data
      [--outbound-threads=N]                             # number of threads for outbound data
      [--route-threads=N]                                # number of threads for events routing for query execution
      [--timer-threads=N]                                # number of threads for internal timers for query execution
      [--rpc-threads=N]                                  # number of threads for rpc handlers
      [--web-threads=N]                                  # number of threads for WebUI handlers
  -l, [--logdir=LOGDIR]                                  # directory path of logfiles when daemonized [nil (console for foreground)]
      [--log-filesize=LOG-FILESIZE]                      # log rotation size [10MB]
      [--log-backups=N]                                  # log rotation backups [10]
      [--log-buffer-lines=N]                             # log lines to fetch from API [1000]
      [--log4j-properties-path=LOG4J-PROPERTIES-PATH]    # path to ignore other log* options when this option is present
      [--more-quiet], [--no-more-quiet]                  # set loglevel as ERROR
  -q, [--quiet], [--no-quiet]                            # set loglevel as WARN
  -v, [--verbose], [--no-verbose]                        # set loglevel as DEBUG
      [--more-verbose], [--no-more-verbose]              # set loglevel as TRACE
  -h, [--help], [--no-help]                              # show this message
  norikra stop [options]

  -p, [--pidfile=PIDFILE]  # pidfile path when daemonized [/var/run/norikra/]
                           # Default: /var/run/norikra/
      [--timeout=N]        # timeout seconds to wait process exit [5]
                           # Default: 5

Performance option details

Threads option available with norikra start. Simple specifiers for performance with threadings:

norikra start --micro     # or --small, --middle, --large (default: 'micro')

Norikra server has 3 types of threads:

In many cases, norikra server handling high rate events needs large number of rpc threads to handle input/output rpc requests. WebUI don't need threads rather than default in almost all of cases.

Engine threads depends on queries running on norikra, input/output event data rate and target numbers. For more details, see Esper's API Documents:

Norikra's simple specifiers details of threadings are:

To specify sizes of each threads, use --*-threads=NUM options.

Jetty threads

Jetty requires threads more than CPU cores. If you execute Norikra on 4 CPU cores server, specify --rpc-threads and --web-threads more than 4.

JVM Options

norikra start commands passes following -X options into its JVM.

And, in default, norikra start specify jvm options below:

-XX:+UseConcMarkSweepGC -XX:+UseCompressedOops
-XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly
-XX:SurvivorRatio=2 -XX:MaxTenuringThreshold=15 -XX:TargetSurvivorRatio=80

Use --bare-jvm option if you want to specify these (or other conflicting) options.

For GC logs in trouble shootings, specifying --gc-log FILE_PATH make these options below enabled:

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps