Configuration¶
Static Configuration¶
XIO strives to use static configuration values over hard coded constants whenever possible. Static configuration in XIO is done with Typesafe Config. XIO provides sensible defaults static configuration values.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | xio {
// default values for application limits
applicationLimits {
// maximum number of connections across all servers in the application
maxConnections = 15000
}
// default values for server limits
serverLimits {
// maximum number of connections for a single server instance
maxConnections = 500
// maximum frame size per connection
maxFrameSize = 9600
// triggered when no read was performed for the specified period of time. Specify 0 to disable.
maxReadIdleTime = 60seconds
// triggered when no write was performed for the specified period of time. Specify 0 to disable.
maxWriteIdleTime = 60seconds
// triggered when neither read nor write was performed for the specified period of time. Specify 0 to disable.
maxAllIdleTime = 60seconds
}
// default values for application settings
applicationSettings {
// location of the zookeeper cluster DEPRECATED
zookeeperCluster = ""
zookeeper {
// location of the zookeeper cluster
cluster = "localhost:2181"
client {
retry {
// zookeeper client retry policy
policy = RetryOneTime
// policy must match one of the following sections:
BoundedExponentialBackoffRetry {
// see: https://curator.apache.org/apidocs/org/apache/curator/retry/BoundedExponentialBackoffRetry.html
baseSleepDuration = 2seconds
maxSleepDuration = 10seconds
maxRetries = 10
}
ExponentialBackoffRetry {
// https://curator.apache.org/apidocs/org/apache/curator/retry/ExponentialBackoffRetry.html
baseSleepDuration = 2seconds
maxRetries = 10
}
RetryForever {
// https://curator.apache.org/apidocs/org/apache/curator/retry/RetryForever.html
sleepDuration = 2seconds
}
RetryNTimes {
// https://curator.apache.org/apidocs/org/apache/curator/retry/RetryNTimes.html
n = 10
sleepDuration = 2seconds
}
RetryOneTime {
// https://curator.apache.org/apidocs/org/apache/curator/retry/RetryOneTime.html
sleepDuration = 2seconds
}
RetryUntilElapsed {
// https://curator.apache.org/apidocs/org/apache/curator/retry/RetryUntilElapsed.html
maxElapsedDuration = 10seconds
sleepDuration = 2seconds
}
}
}
}
// number of boss threads to create
bossThreads = 5
// boss thread name format
bossNameFormat = "xio-application-boss-%d"
// number of worker threads to create
workerThreads = 10
// worker thread name format
workerNameFormat = "xio-application-worker-%d"
// settings for dynamic configuration manager
configurationManager {
ipFilter {
// path to monitor for ip filter rules
path = "/xio/ipFilterRules"
}
http1Filter {
// path to monitor for http filter rules
path = "/xio/http1FilterRules"
}
}
// settings for configuration update server
configurationUpdateServer {
// update server is disabled by default
enabled = false
// update server is bound to port 9999 on loopback by default
bindIp = 127.0.0.1
bindPort = 9999
// update server will coalesce changes and persist them every 5 seconds by default
writeInterval = 5seconds
}
// settings for muxing client
requestMuxer {
messagesPerBatch = 100
drainMessageQInterval = 1millisecond
multiplierIncrementInterval = 500milliseconds
multiplierDecrementInterval = 750milliseconds
rebuildConnectionLoopInterval = 250milliseconds
}
}
serverSettings {
// servers bind to port 80 on loopback by default
bindIp = 127.0.0.1
bindPort = 80
// DEPRECATED
bossThreads = 5
// DEPRECATED
workerThreads = 10
// xio message logger is enabled by default
messageLoggerEnabled = true
// load self signed cert by default
tls { include classpath("tls.conf") }
}
applicationTemplate {
// application name defaults to blank
name = ""
limits = ${xio.applicationLimits}
settings = ${xio.applicationSettings}
}
serverTemplate {
// server name defaults to blank
name = ""
limits = ${xio.serverLimits}
settings = ${xio.serverSettings}
}
// example of how to build an xio application from templates
exampleApplication = ${xio.applicationTemplate} {
name = "example application"
servers {
exampleServer = ${xio.serverTemplate} {name = "example server"}
}
}
exampleServer = ${xio.serverTemplate} {name = "example"}
servers = [
# ${exampleServer}
]
testApplication = ${xio.applicationTemplate} {
name = "test application"
servers {
testServer = ${xio.serverTemplate} {
name = "test server"
settings {
bindPort = 0
}
}
}
}
}
|