Name
ex_env — Enduro/X Environment configuration
DESCRIPTION
Enduro/X uses set of environment variables which are an initial environment
for the application domain. There is a set of parameters related to the system,
prefixes, Posix Queue mount points, and various system limits. The next step
to the configuration is application domain configuration, in ndrxconfig.xml and debug.conf
(or Common-Configuration respectively).
Mandatory Env. Variables
-
NDRX_NODEID=NODE_ID
-
Cluster Node ID. Should be within 1..32.
-
NDRX_CLUSTERISED=1|0
-
Do we work in cluster mode or not? 1 - yes, we are in cluster.
0 - no, we are not in cluster.
-
NDRX_LDBAL=LOAD_BALANCE_PERCENT
-
if LOAD_BALANCE_PERCENT is 0 = means process all locally,
if value is set to 100 = process all on remote servers (if svc
available on remote server). 70% means, process 30% locally
70% remotely.
-
NDRX_TOUT=TIME_OUT_IN_SECONDS
-
Global tpcall() timeout, if not called with TPNOTIME flag.
If process will not return in this time, then TPETIME error
will be returned.
-
NDRX_ULOG=ULOG_PATH
-
Writable system path where to write user logs. Significant
system events as well as userlog(3) output is written
to file ULOG.YYYYMMDD, where YYYYMMDD corresponds to the current
date. This directory also typically is used to output any process
related Enduro/X logs, from internal logging
(topics ndrx and ubf) or from user logging (tp topic)
performed by tplog(3) or by ndebug.h macros. Logfile names
are configured at [@debug] section in common-configuration ini
file or in ndrxdebug.conf(5) configuration file.
-
NDRX_QPREFIX=APP_PREFIX
-
Prefix used for POSIX IPC resources (shm and queue).
-
NDRX_SVCMAX=MAX_SERVICES
-
This determines the maximum number of services supported by instance.
The less is number, then less shared memory is used. However for
performance reason, number should be much bigger (3-4 times) than
actual estimated service count. Bigger number might speed up linear
hashing, i.e. it will be less likely that hash will collide.
-
NDRX_SRVMAX=MAX_SERVERS
-
Maximum number of servers that will be supported. This affects the
-i flag. Server ID. The max server id will be MAX_SERVERS-1.
-
NDRX_CONFIG=FULL_PATH_TO_CONFIG_FILE
-
This shows the full path to usual ndrxconfig.xml.
-
NDRX_QPATH=QUEUE_MOUNT_POINT
-
Full path to directory where POSIX Queue is mounted.
-
NDRX_SHMPATH=SHARED_MEM_MOUNT_POINT
-
Full path to POSIX Shared memory mount point.
-
NDRX_CMDWAIT=NDRXD_COMMAND_WAIT_SECS
-
Number of seconds for which ndrxd(8) process periodically waits on command queue
between the checks. For SystemV mode, accuracy of this setting is 200ms.
Additional note: the command wait time actually is lowest value between the
NDRXD_COMMAND_WAIT_SECS and time left till the next <sanity> cycle run,
configured in ndrxconfig.xml(5).
-
NDRX_DPID=PATH_TO_NDRXD_PID_FILE
-
This is full path to ndrxd PID file.
-
NDRX_RNDK=APP_DOMAIN_RANDOM_KEY
-
Random key to indentify the processes beloning to
this app domain (i.e. used in ps ef).
-
NDRX_IPCKEY=SYS_V_SEMAPHORE_KEY
-
System V Semaphores key number. Used for shared memory locking.
POSIX semaphores are not used here, because they are not unlocked if process
dies during acquired semaphore. For System V shared memory IPCKEY+0..20
different keys may be used for shared memory. For System V semaphores IPCKEY+0..20
range is used.
-
NDRX_MSGMAX=MAX_MSGS_PER_QUEUE
-
Posix queue config attrib. Max number of messages that can be put in one queue.
-
NDRX_DQMAX=NDRXD_ACCESS_Q_MSG_MAX
-
Enduro/X ATMI daemoni ndrxd access Q size. Bigger is better.
-
NDRX_MSGSIZEMAX=NDRXD_ACCESS_Q_MSG_MAX
-
Max message size (in bytes). The value is limited to the operating system limits
of the maximums size of the POSIX queues message size. For example on Linux
kernel 3.13 it is possible to set message size to 10 Megabytes. Also the message
size denotes the internal buffer sizes for XATMI message processing.
If message size max is set to less than 64KB,
then buffer size is defaulted to 64KB.
This parameter also affects the opening/creation of the message queue. As the
message size is specified in mq_open() attributes.
-
NDRX_APPHOME=FULL_PATH_TO_APPDOMAIN_INSTANCE_DIR
-
This is full path to application (not an Enduro/X directory it self) root directory.
-
NDRX_HOME=FULL_PATH_TO_ENDUROX_ROOT_DIRECTORY
-
Full path to Enduro/X installaction directory.
-
NDRX_DEBUG_CONF=FULL_PATH_TO_DEBUG_CONFIG_FILE
-
This sets full path to debug configuration file.
-
NDRX_DEBUG_STR=DEBUG_STRING
-
Debug configuration for binary according to ndrxdebug.conf(5) syntax,
binary name is not required e.g. "ndrx=5 tp=5 file=/tmp/log". This overrides
any other configuration settings specified in configuration files for the
process.
-
NDRX_UBFMAXFLDS=MAX_NUMBER_OF_UBFFIELDS
-
Max number of UBF fields. Used for hashing. Bigger number is better.
The max number is number is 33554432 (25 bit).
-
NDRX_DMNLOG=FULL_PATH_TO_NDRX_DMNLOG
-
The full path to ndrxd log file. Used by shell scripts.
-
NDRX_DMNLEV=LOG_LEVEL_OF_NDRXD
-
Log level of ndrxd. From 1..5. 5 is max. Used by shell scripts.
-
NDRX_LOG=FULL_PATH_TO_XADMIN_LOG_FILE
-
Full path to xadmin log file. Used by shell scripts.
-
NDRX_LEV=LOG_LEVEL_OF_XADMIN
-
Log level of xadmin. From 1..5. 5 is max. Used by shell scripts.
-
NDRX_XA_RES_ID=XA_RESOURCE_ID
-
XA API two phase commit resource id.
Must be set if using distributed transactions. Valid value is in range
of 1..255.
-
NDRX_XA_OPEN_STR=XA_OPEN_STRING
-
This is open string for two phase commit XA driver.
Must be set if using distributed transactions.
-
NDRX_XA_CLOSE_STR=XA_CLOSE_STRING
-
This is close string for two phase commit XA driver. This is optional,
NDRX_XA_OPEN_STR will be used if not set.
-
NDRX_XA_DRIVERLIB=ENDUROX_XA_DRIVER_LIB
-
This is full path to Enduro/X shared library which loads the XA api.
-
NDRX_XA_RMLIB=RESOURCE_MANAGER_SPECIFIC_DRIVER
-
This is full path to resource manager’s specific driver (shared library).
Must be set if using distributed transactions.
-
NDRX_XA_LAZY_INIT=LAZY_INIT_FLAG
-
Set to 1 if XA sub-system should be initialized on first transactions.
If not set, then defaulted to 0, meaning initialize XA sub-system on
executable startup.
-
NDRX_XA_FLAGS=XADMIN_XA_FLAGS
-
Special for XA sub-system. It is semicolon separated tags with values.
currently tags RECON, NOJOIN and NOSTARTXID are defined.
RECON tag defines the number of attempts
of xa_close()/xa_open() and doing xa_start() again in case if original
xa_start() failed (the ATMI call tpbegin()) - for example firewall have been
closed the connection. The format for the tag is:
RECON:<comma separated list of error codes e.g. 4,-8,* - any err>:<number
of attempts>:<sleep between attempts milli-sec>[:<non_start_error codes for retry>]'
example: RECON:*:3:100, meaning reconnect (do xa_close()/xa_open())
on any xa_start error, do the 3x attempts, sleep 100 milliseconds between attempts.
Flag RECON for other XA calls that xa_start() would also perform reconnects,
but that would be applied to XAER_RMFAIL errors only by default. To change
the list of error codes for xa_prepare, xa_commit, xa_rollback, xa_recover,
xa_forget retries, set the comma seperated list of codes in non_start_error position.
With NOJOIN indicates that XA Switch does not support TMJOIN mode.
With NOSTARTXID indicates that transaction session does not start with
identifier, but only when process disconnects from transaction, it is possible
to give transaction id for work which has been done to database. NOSUSPEND
flag can be used to configure particular resource that transaction is not
suspended when tpcall(3) is issued from process which uses given resource
manager. BTIGHT flag together with NOJOIN flag ensures that tight branching
is used. By default Enduro/X writes branch id in gtrid and bqual parts
equally. With BTIGHT flag set, gtrid is not changed for particular
RMID, but only branch qualifier bqual will be updated to contain the actual
branch identifer.
Flag FSYNC ensures that tmsrv(8) log contents at commit decision are
written to disk with fsync(). FDATASYNC ensures that tmsrv(8) commit decision
is written to disk with fdatasync(). DSYNC ensures that tmsrv
commit decision log file is synchronized with file-system directory structure
(i.e. fsync() is performed on log file directory). In case if using tmqueue(8)
then these flags also affect that the way how messages are persisted to disk.
Note that FSYNC, FDATASYNC and DSYNC may significantly slow down
the distributed transaction processing.
-
NDRX_NRSEMS=NDRX_NRSEMS
-
Number of semaphores used for protecting shared memory, when Enduro/X
running in poll() mode. The minimum is recommended something about 7.
Every service name in shared memory is hashed and semaphore protecting
the service is calculated by modulus of NRSEMS. This affects NDRX_IPCKEY
semaphore, by giving the more occurrences in array. The first array entry
is used by normal Enduro/X operations, and the others 2..1+NRSEMS is
used by poll() mode service protection. Default value is 30.
-
NDRX_MAXSVCSRVS=NDRX_MAXSVCSRVS
-
Max number of servers can advertise same service. This is used only in
poll() and SystemV mode.
The number affects the size of shared memory used for services. Bigger number causes
more memory to be used for service registry. If the number of servers goes over this number
for one service, the service entry will be ignored. Default is 30.
-
PATH=PATH
-
This is not Enduro/X specific env variable. But Enduro/X distribution bin
directory should be included in system PATH env. variable.
-
FLDTBLDIR=FULL_OR_RELATIVE_PATH_OF_UBF_FIELD_DIRS
-
This is colon separated list of directories where .fd files are located. I.e. UBF field definitions.
-
FIELDTBLS=COMMA_SEPERATED_LIST_OF_FIELD_FILES
-
This is comma separated list of field files found in FLDTBLDIR.
-
NDRX_CCONFIG=NDRX_COMMON_CONFIG_FILE
-
If this is set then, all above configuration is read from specified ini
file in NDRX_COMMON_CONFIG_FILE in [@global] section. The Enduro/X config
driving unit is able to merge configuration from multiple config files,
and you can set higher priority files by in NDRX_CCONFIG1, NDRX_CCONFIG2
NDRX_CCONFIG3, NDRX_CCONFIG4, NDRX_CCONFIG5. Basically NDRX_CCONFIG
is lowest priority and NDRX_CCONFIG5 is highest priority. The specified
configuration file can be directory, in that case Enduro/X will search for
files with mask *.ini, *.cfg, *.conf, *.config files. All will be loaded
in alphabetical order.
-
NDRX_CCTAG=NDRX_COMMON_CONFIG_TAG
-
This is basically subsection used for Enduro/X configuration sections
[@global], [@debug], [@queue]. If the variable is set, then Enduro/X will
lookup at process startup for sections like [@global/YOUR_TAG], etc. CC tag
can contain multiple sections, for example server1/RM2. Enduro/X will lookup
the variables in each section [@global/server1] and [@global/RM2] for setting
up the system.
-
NDRX_XADMIN_CONFIG=XADMIN_CONFIG_FILE
-
This variable is used by xadmin read the specific configuration file with
xadmin’s settings. Variable is optional.
-
HOME=UNIX_USER_HOME_DIR
-
This variable is used by xadmin to search for per user configuration file
when xadmin is started. In home directory search for configuration is done
by $HOME/.xadmin.config. This file is used in case if NDRX_XADMIN_CONFIG
is missing. Variable is optional.
-
VIEWDIR=NDRX_VIEW_DIR
-
This is colon separated list of directories where to search VIEW compiled
object files. The access to these directories are done only once operations
with views are performed.
-
VIEWFILES=NDRX_VIEW_FILES
-
Comma separated list of VIEW object files (typically with extension .V).
Object files are produced by view compiler viewc(8).
-
NDRX_PLUGINS=NDRX_PLUGINS
-
This is semicolon separated string which denotes the list Enduro/X
plugins which needs to be loaded at any XATMI program startup. Following plugins
are provided with Enduro/X: libcryptohost.so - cryptography key by hostname.
-
NDRX_SILENT=SILENT_SETTING
-
If environment variable is present (and set to Y), the xadmin tool
will not print banner header at startup.
-
NDRX_XADMINTOUT=XADMIN_TOUT
-
This override of NDRX_TOUT configuration for xadmin queue operations.
This timeout is used for certain calls to ndrxd (for example startup,
shutdown, service listing, etc). Also it is used for communication
with XATMI servers like cpmsrv and tmsrv. This is number of seconds,
the value must be greater than 0. If parameter is set, then this will
enable timeout control for communication with ndrxd daemon, if parameter
is not set, the code will work in legacy mode, meaning that list calls
to ndrxd will never get timeout.
-
NDRX_SVPROCNAME=SERVER_PROC_NAME
-
Server process name exported by ndrxd at XATMI server process boot time.
The name is server name extracted from "<server>" tag attribute name.
-
NDRX_SVCLOPT=SERVER_COMMAND_LINE
-
Server process command line. Generated and exported at the moment of XATMI
server boot. If no command line options are passed to XATMI server, then
libatmisrv tries to extract the parameter from this environment variable
before failing, due to missing command line arguments.
-
NDRX_SVPPID=SERVER_PARENT_PID
-
Parent process PID of server process. This process basically is the one
which is booted by ndrxd. In case if server definition contains some
wrapper processes (or scripts), then this basically is different than value
of the real XATMI server. This variable is used by XATMI server library
to report both PIDs to the ndrxd, the parent PID and the real process PID.
-
NDRX_SVSRVID=SERVER_PROCESS_ID
-
This is XATMI server id set in <srvid> tag. The variable can be used
for example is wrapper scripts to modify some resources used by process.
For example if booting something like Tomcat app server, the admin TCP ports
can be adjusted by this environment variable in order to avoid conflicts for
booting multiple instances.
-
NDRX_SVQREADERSMAX=MAX_SIMULTANEOUS_READERS
-
This configuration parameter set the maximum parallel readers for System V
to Posix queues mapping tables. The number is used for read-write locks,
thus the number sets the simultaneous readers, but during that time the
write thread needs to wait for all readers to finish up the mapping when
the writer will step in and all readers will wait. If the number is bigger
read will be performed better when many processes are used, but that could
lead to write starvation, and writes (opening queues) may become slow.
System V queues acquires one more semaphore resource from the NDRX_IPCKEY+1.
Thus this semaphore is used read/write mode to protect the SystemV-to-Posix
and Posix-to-SystemV mapping tables.
The default value for this parameter is 50. This parameters is also used
when processes accesses services shared memory in System-V or EMQ mode for
protecting the round-robin selector.
-
NDRX_MSGQUEUESMAX=MAX_IPC_QUEUES
-
Max number of queues that can be mapped to System V sub-system. This parameter
defines size for two shared memory chunks which names are <NDRX_QPREFIX>,shm,p2s
and <NDRX_QPREFIX>,shm,s2p. The number defines number of queue entries in
the table. The bigger the number, the better hashing is got and lookup is
quicker, but more memory is used. The minimum number shall be equal to the
number of queues that will be used on the system, but recommended number is
something as twice it. Each queue entry requires about 168 bytes.
The default value for this parameter is 20000.
-
NDRX_CLTTAG=CLIENT_PROCESS_TAG
-
This is client process tag exported to cpmsrv(8) controlled processes.
This value can be used also in ndrxconfig.xml(5)
when formatting client process command line and log file names.
-
NDRX_CLTSUBSECT=CLIENT_PROCESS_TAG
-
This is client process tag’s sub-section exported to cpmsrv(8)
controlled processes. This value can be used also in ndrxconfig.xml(5)
when formatting client process command line and log file names.
-
NDRX_LIBEXT=SHARED_LIB_EXTENSION
-
This is shared library platform specific extension. For example Linux/AIX and
Solaris would use "so". For MacOS it would be "dylib". Env variable is
generated by provision script and it set in global variables.
-
NDRX_NORMWAITMAX=NORM_WAIT_ATTEMPTS
-
This configures number of attempts for xadmin(8) (and tpadmsv(8)) commands
to wait in case if command requires normal ndrxd(8) context, but process
is in other context, for example starting or stopping. The default is 60.
Between each attempt 1 second sleep is done.
-
NDRX_FPAOPTS=POOL_MALLOC_OPTS
-
This flag allows configures Enduro/X Fast Pool Allocator. Pool Allocator is
mechanism in Enduro/X core libraries to avoid calls to malloc() and free()
system calls. Instead for memory block of sizes 256, 512, 1024, 2048, 4096
and S ( NDRX_MSGSIZEMAX - system buffer) are allocated and cached
(stored in linked list) when parked free. Thus
at certain points Enduro/X requests for memory different sizes from FPA, the
FPA library finds the first suitable size (may be bigger than request) and
block is removed from list. When program does free the block, FPA returns it
to linked list instead of freeing back to the system. Thus from OS perspective
memory is still used. For each of the block sizes maximum number
stored blocks are configured. The configuration is written
in following form <block_size>:<stored_count>,…,<block_size_N>:<stored_count_N>.
There is also defined special block size D. This means default. By setting
this values, counts are changed for all sizes.
The stored count can be set in value of 1..max_int.
If set to special value M, then standard, then malloc is used directly.
It is error to have other non valid number as count. If block
size is not found then system, the userlog message is added, but error is
not generated. The block sizes supports suffix K which multiplies
the value by 1024. Default value is 256:25,512:15,1K:10,2K:10,4K:10,S:10.
User might adjust these buffer sizes for multi-threaded apps, especially
the system buffer (S). By increasing the numbers, there is higher possibility
that process will permanently use more memory.
-
NDRX_THREADSTACKSIZE=STACKS_SIZE_IN_KB
-
This is target stack size for new threads produced by Enduro/X. If value 0 is
is specified, default OS new thread stack size is used. If value -1 is used,
then threads produced by Enduro/X are configured by
stack size which is set for the program main thread (i.e. current resource
limit read by getrlimit(RLIMIT_STACK, …)). If the rlimit configured is set
to unlimited, then Enduro/X sets thread stack size to 8192 (which is 8 megabytes).
If parameter NDRX_THREADSTACKSIZE is not configured, default value
8192 (8 megabytes) stack size is used.
-
NDRX_SCANUNIT=SYSVTOUT_THREAD_SCAN_WAIT_MS
-
This flag is used by SystemV polling configuration, for others modes like
epoll, poll, kqueue, emq, svapoll it is not used. The flag indicates
how long time is spent (in milliseconds) on waits between scanning for
System-V timeouts. The default value is 1000 and minimum is 1.
-
NDRX_LCFREADERSMAX=NUMBER_OF_SEM_READERS
-
This is number of Latent Command Framework (LCF) read/write lock readers.
Thus this number of processes
may process LCF commands while concurrent write (publish to LCF shared memory)
will wait for readers to complete. The default is 1000. The number should
match the number of processes running in system. However it depends on the
commands published, if commands are fast the number could be lower.
-
NDRX_LCFMAX=NUMBER_OF_COMMAND_SLOTS
-
This is number of slots in shared memory used for LCF commands. The default is
20. Number shall be kept low as high number will make all processes to scan
throughout the array of commands when any command is published. This setting
shall be used as per application instance and not for sub-section configuration.
Also this setting affects the configuration shared memory size (NDRX_IPCKEY + 6).
-
NDRX_LCFCMDEXP=NUMBER_OF_SECONDS
-
When new process is created, it scans and processes LCF commands at startup.
This setting affects those commands for which -e is given. It sets the
time frame within which after the command published it is processed. After
this time command expires, and new processes does not run the command.
Default value is 60.
-
NDRX_LCFNORUN=COMMAND_RUN_FLAG
-
If variable variable is present and set to y or Y, the binary still connects
to LCF/Configuration shared memory, but does not execute any of the LCF
commands. Default is n. This can be useful in case if xadmin(8) needs to
correct some invalid commands which might prevent to run xadmin by it self.
-
NDRX_RTSVCMAX=SERVICE_COUNT
-
Number of service slots available in shared memory for <services> tag. Greater
number gives better performance for linear hashing - less probability for collision.
Default value is 1000.
-
NDRX_RTCRTMAX=CRITERION_BUFFER_SIZE
-
This is number of bytes available for routing criterion storage. Default
value is 102400 which corresponds to 100 KB. One <route> tag takes
about 300 bytes and one range entry take about 64 bytes (by not including
the string data which is dynamic length).
-
NDRX_RTGRP=ROUTING_GROUP
-
This is routing group code. If environment variable is present for XATMI server
process, then any service advertise and unadvertise will operate in bulk with
original service name and additionally added suffix of "@<NDRX_RTGRP>". For
example if having NDRX_RTGRP set to "G5" and process advertises service
DEBIT, then in total two services will be advertise such as DEBIT and
DEBIT@G5. Afterwards with <service/> and <route/> settings can be used
to route the traffic between default service and service in group.
-
NDRX_APIFLAGS=APIFLAGS
-
This is Enduro/X standard configuration string (e.g. comma separated)
list of specific API configuration flages used by Enduro/X.
Currently defined flags are: json_escape and ubf_ptrparse
json_escape flag enables to escape non printable
characters during the UBF 2 JSON conversation and vice versa.
Escape is done on non printable charaters i.e. !(isprint() && !iscntrl()),
and these are escaped with "\" + xx, where xx is hex number of the ASCII char.
e.g. ASCII "space" would become "\20". The back-slash by becomes "\\".
ubf_ptrparse enables Bextread(3) and Bextreadcb(3) functions to read
BFLD_PTR pointers from input. By default buffer pointers for security
reasons are not read. Flag ubf_dupfidok enables accepting duplicate field
IDs during the mkfldhdr(3) processing (this is for Tuxedo compatibility).
-
NDRX_NOPOLLEXCL=ANY_VALUE
-
If flag is set to any value (i.e. Y), and Enduro/X runs under AIX 7.3 or
newer in svapoll mode, then this flag disables POLLEXCL flag usage for
solving thundering herd issue. Also this setting disables setup of the
POLLEXCL_POLICY=LIFE:ONE environment variable by ndrxd prior exec of
new binary.
-
NDRX_PGMAX=NUMBER_OF_GROUPS
-
This is number of process groups that can be registered in shared memory for
<procgroups> tag. The default value for NUMBER_OF_GROUPS is 64.
Minimum value is 0, which disables the process group functionality.
If changing this setting, "xadmin down -y" cleanup after the shutdown
is recommended, as this affects LCF shared memory size which might
be present event in shutdown state.
-
NDRX_SGREFRESH=SINGLETON_GROUP_REFRESH_TIME
-
Defines the time in seconds by which the singleton group lock provider
(exsinglesv(8)) must refresh (updated timestamp) in s hared memory
to indicate that the group lock is verified and still valid.
Default value is 60 seconds.
-
NDRX_SGLOCKINC=NUMBER
-
Number by which exsinglesv(8) would increment ping lock
counters. If group is normally locked, it increments on every
check by 1. Thus if using tmsrv(8) in the singleton group
NDRX_SGLOCKINC parameter value multiplied by exsinglesv(8) configuration
parameter value chkinterval, sets the upper limit for global transaction
time to stay in active/un-committed state, as when global transaction
is started, ping lock counter is read, and at commit point,
ping lock counter is also read from the group ping lock file. The counter
difference must be less than NDRX_SGLOCKINC. Such check ensures
that no parallel run of the tmsrv runs has happened during
the transaction life-cycle. Default value is 3600. Note that
too large value could spend the lock counters too fast, however
counter is stored as long value having 31 or 61 bits of storage
(depending on the platform).
-
NDRX_PROCGRP_NO=PROCESS_GROUP_NUMBER
-
For XATMI server process or XATMI client process value is set to
process group number, if process is part of process group.
In ndrxconfig.xml(5) XATMI server processes are added to processes
group by setting group name in <procgrp> tag, and client processes
are added to process group by setting group-name in procgrp attribute of
the <client>/<exec> tag.
-
NDRX_PROCGRP_LP_NO=PROCESS_GROUP_NUMBER
-
This environment variable is exported for lock provider processes
(exsinglesv(8)) to indicate the group number for which given
process manages the lock. Variable is set to process only in case
if <procgrp_lp> tag is set to <server> in ndrxconfig.xml(5).
-
NDRX_RESPAWN=RESPAWN_FLAG
-
The environment variable is exported to the process in case, if
process is restarted after the process crash. For such case
value 1 is present in variable. Note, that during normal
start/sreload/reload-on-change operations this flag is environment
variable is not set.
EXAMPLE
Sample configuration:
export FIELDTBLS=Exfields,fieldtab1.fd,fieldtab2.fd
export FLDTBLDIR=/enduro/tst1/tuxfbuf
export VIEWDIR=/enduro/tst1/views
export VIEWFILES=customer.V,card.V
export NDRX_DMNLEV=5
export NDRX_DMNLOG=/enduro/tst1/tmp/NDRXD
export NDRX_APPHOME=/enduro/tst1
export NDRX_CLUSTERISED=0
export NDRX_CMDWAIT=1
export NDRX_CONFIG=/enduro/tst1/conf/ndrxconfig.xml
export NDRX_DEBUG_CONF=/enduro/tst1/conf/ndrxdebug.conf
export NDRX_DPID=/enduro/tst1/tmp/ndrxd.pid
export NDRX_DQMAX=3000
export NDRX_HOME=/opt/endurox
export NDRX_IPCKEY=442000
export NDRX_LDBAL=0
export NDRX_LEV=5
export NDRX_LOG=/enduro/tst1/tmp/XADMIN
export NDRX_MSGMAX=100
export NDRX_MSGSIZEMAX=32000
export NDRX_NODEID=1
export NDRX_QPATH=/dev/mqueue
export NDRX_QPREFIX=/tst1
export NDRX_RNDK=jaUZwOlTqglSc
export NDRX_SHMPATH=/dev/shm
export NDRX_SRVMAX=10000
export NDRX_SVCMAX=600
export NDRX_TOUT=60
export NDRX_THREADSTACKSIZE=8192
export NDRX_UBFMAXFLDS=16000
export NDRX_ULOG=/enduro/tst1/logs
# XA 2PC SECTION, ORACLE DB
export ORACLE_SID=ROCKY
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$PATH:ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NDRX_XA_RES_ID=1
export NDRX_XA_OPEN_STR="ORACLE_XA+SqlNet=ROCKY+ACC=P/endurotest/endurotest1+SesTM=180+LogDir=/tmp/xa+nolocal=f+Threads=true"
export NDRX_XA_CLOSE_STR=$NDRX_XA_OPEN_STR
# XA Static registration driver
export NDRX_XA_DRIVERLIB=$NDRX_HOME/lib/libndrxxaoras.so
# XA Dynamic registration driver
#export NDRX_XA_DRIVERLIB=$NDRX_HOME/lib/libndrxxaorad.so
export NDRX_XA_RMLIB=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
export NDRX_XA_LAZY_INIT=1
# XA SECTION, END
Common-config ini file sample configuration, assuming following settings in env:
export NDRX_CCONFIG=/enduro/tst1/conf/app.ini
export NDRX_CCTAG=server1/RM2
The configuration file might look like:
#
# Common variables, inherited for CCTAGs
#
[@global]
FIELDTBLS=Exfields,fieldtab1.fd,fieldtab2.fd
FLDTBLDIR=/enduro/tst1/tuxfbuf
VIEWDIR=/enduro/tst1/views
VIEWFILES=customer.V,card.V
NDRX_DMNLEV=5
NDRX_DMNLOG=/enduro/tst1/tmp/NDRXD
NDRX_APPHOME=/enduro/tst1
NDRX_CLUSTERISED=0
NDRX_CMDWAIT=1
NDRX_DPID=/enduro/tst1/tmp/ndrxd.pid
NDRX_DQMAX=3000
NDRX_HOME=/opt/endurox
NDRX_IPCKEY=442000
NDRX_LDBAL=0
NDRX_LEV=5
NDRX_LOG=/enduro/tst1/tmp/XADMIN
NDRX_MSGMAX=100
NDRX_MSGSIZEMAX=32000
NDRX_NODEID=1
NDRX_QPATH=/dev/mqueue
NDRX_QPREFIX=/tst1
NDRX_RNDK=jaUZwOlTqglSc
NDRX_SHMPATH=/dev/shm
NDRX_SRVMAX=10000
NDRX_SVCMAX=600
NDRX_TOUT=60
NDRX_UBFMAXFLDS=16000
NDRX_THREADSTACKSIZE=8192
NDRX_ULOG=/enduro/tst1/logs
#
# CCTAG section server1
#
[@global/server1]
NDRX_CONFIG=/enduro/tst1/conf/ndrxconfig.xml
#
# CCTAG section RM2
#
[@global/RM2]
# XA 2PC SECTION, ORACLE DB
NDRX_XA_RES_ID=1
NDRX_XA_OPEN_STR="ORACLE_XA+SqlNet=ROCKY+ACC=P/endurotest/endurotest1+SesTM=180+LogDir=/tmp/xa+nolocal=f+Threads=true"
NDRX_XA_CLOSE_STR=${NDRX_XA_OPEN_STR}
# XA Static registration driver
NDRX_XA_DRIVERLIB=${NDRX_HOME}/lib/libndrxxaoras.so
# XA Dynamic registration driver
#NDRX_XA_DRIVERLIB=${NDRX_HOME}/lib/libndrxxaorad.so
NDRX_XA_RMLIB=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
NDRX_XA_LAZY_INIT=1
# XA SECTION, END
#
# Debug section (no need for NDRX_DEBUG_CONF in CConfig case)
#
[@debug]
*= ndrx=0 ubf=0
[@debug/server1]
*= ndrx=5 ubf=0
NOTES FOR ORACLE DB
Note that tmsrv run with multiple threads. Flag +Threads=true MUST be set in
NDRX_XA_OPEN_STR. Otherwise unexpected core dumps can be received from tmsrv.
NOTES FOR IBM AIX
For IBM AIX it is recommended that NDRX_THREADSTACKSIZE parameter is used.
If parameter is not set, Enduro/X tries to get new thread stack size from
getrlimit(RLIMIT_STACK, …) and is assigning current value to new thread.
Starting from AIX 7.2, it looks like AIX is summing these stacks and checks
against the ulimit -s (which is the same RLIMIT_STACK value), and thus
new threads fails to create, as total process stack limit is exhausted.