Author: hiranya
Date: Wed Aug 14 02:02:02 2013
New Revision: 1513713
URL: http://svn.apache.org/r1513713
Log:
Documentation update
Modified:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml
Modified:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml?rev=1513713&r1=1513712&r2=1513713&view=diff
==============================================================================
---
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml
(original)
+++
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml
Wed Aug 14 02:02:02 2013
@@ -84,7 +84,8 @@
</section>
<section name="Transport Configuration" id="Configuration">
<p>
- Pass Through HTTP transport is configured by default in the
repository/conf/axis2.xml
+ Pass Through HTTP transport is configured by default in the
+ <strong>SYNAPSE_HOME/repository/conf/axis2.xml</strong>
file of Synapse. The default configuration activates the
following four components:
</p>
<ul>
@@ -682,264 +683,330 @@
<p>
In addition to the basic parameters described in the previous
section, the
Pass Through HTTP transport provides some advanced options to
tweak its
- runtime behavior and performance. These options are configured
in the
- passthru-http.properties file which should be placed in the
lib directory of
- Synapse. These advanced options enable the user to control
some of the low-level
+ runtime behavior and performance. These options should be
configured in the
+ <strong>SYNAPSE_HOME/lib/passthru-http.properties</strong>
file. These advanced
+ options enable the user to control some of the low-level
transport settings related to TCP sockets, I/O buffers and
thread pools. Following
- table describes all the advanced options that can be set for
the Pass Through
+ sections describe all the advanced options that can be set for
the Pass Through
HTTP transport.
</p>
- <table>
- <tr>
- <th>Parameter Name</th>
- <th>Description/Example</th>
- <th>Required</th>
- <th>Default</th>
- </tr>
- <tr>
- <td>http.socket.timeout</td>
- <td>
- Set the TCP socket timeout in milliseconds
- (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT">SO_TIMEOUT</a>).
- <div class="xmlConf">http.socket.timeout=20000</div>
- </td>
- <td>No</td>
- <td>60000</td>
- </tr>
- <tr>
- <td>http.connection.timeout</td>
- <td>
- Set the TCP connection timeout in milliseconds. This
determines the timeout
- value for non-blocking connection requests. Setting
this property to
- 0 disables connection timeout (i.e. no timeout).
- <div
class="xmlConf">http.connection.timeout=30000</div>
- </td>
- <td>No</td>
- <td>0</td>
- </tr>
- <tr>
- <td>http.nio.interest-ops-queueing</td>
- <td>
- Determines whether or not I/O interest operations are
to be queued and
- executed asynchronously by the I/O reactor thread or
to be applied to
- the underlying
- <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/channels/SelectionKey.html">SelectionKey</a>
- immediately. Allowed values are either 'true' or
'false'.
- <div
class="xmlConf">http.nio.interest-ops-queueing=false</div>
- </td>
- <td>No</td>
- <td>false</td>
- </tr>
- <tr>
- <td>http.tcp.nodelay</td>
- <td>
- Setting this property to 'true' disables
- <a
href="http://en.wikipedia.org/wiki/Nagle's_algorithm">Nagle's algorithm</a>
- for the HTTP connections. That is, outgoing data will
not be buffered
- and aggregated together
- (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#TCP_NODELAY">TCP_NODELAY</a>).
- <div class="xmlConf">http.tcp.nodelay=true</div>
- </td>
- <td>No</td>
- <td>true</td>
- </tr>
- <tr>
- <td>http.socket.rcv-buffer-size</td>
- <td>
- Set the size of the buffers (in bytes) used by the
underlying platform
- for incoming network I/O. This value is only a hint.
When set, this is a
- suggestion to the OS kernel from Synapse about the
size of buffers to
- use for the data to be received over the socket
- (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_RCVBUF">SO_RCVBUF</a>).
- <div
class="xmlConf">http.socket.rcv-buffer-size=4096</div>
- </td>
- <td>No</td>
- <td>8192</td>
- </tr>
- <tr>
- <td>http.socket.snd-buffer-size</td>
- <td>
- Set the size of the buffers (in bytes) used by the
underlying platform
- for outgoing network I/O. This value is only a hint.
When set, this is a
- suggestion to the OS kernel from Synapse about the
size of buffers to
- use for the data to be sent over the socket
- (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_SNDBUF">SO_SNDBUF</a>).
- <div
class="xmlConf">http.socket.snd-buffer-size=4096</div>
- </td>
- <td>No</td>
- <td>8192</td>
- </tr>
- <tr>
- <td>http.socket.linger</td>
- <td>
- Specify the linger-on-close timeout duration (in
milliseconds) for the
- sockets created by the HTTP transport. Setting to 0 or
a negative value
- disables linger-on-close
- (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_LINGER">SO_LINGER</a>).
- <div class="xmlConf">http.socket.linger=5000</div>
- </td>
- <td>No</td>
- <td>-1</td>
- </tr>
- <tr>
- <td>http.socket.reuseaddr</td>
- <td>
- Set the <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_REUSEADDR">SO_REUSEADDR</a>
- socket option for the sockets created by the HTTP
transport. Accepted
- values are either 'true' or 'false'.
- <div class="xmlConf">http.socket.reuseaddr=true</div>
- </td>
- <td>No</td>
- <td>false</td>
- </tr>
- <tr>
- <td>http.nio.select-interval</td>
- <td>
- Set the time interval in milliseconds at which the I/O
reactor wakes up
- to check for timed out sessions and session requests.
- <div
class="xmlConf">http.nio.select-interval=2500</div>
- </td>
- <td>No</td>
- <td>1000</td>
- </tr>
- <tr>
- <td>io_threads_per_reactor</td>
- <td>
- Set the number of I/O dispatcher threads to be used by
each I/O reactor.
- Typically, this property controls the ability of the
HTTP transport
- to handle concurrent I/O events.
- It is recommended that this property is set to the
number of CPU cores
- available for Synapse. By default, Synapse determines
the number of
- available CPU cores and initializes this setting
accordingly.
- <div class="xmlConf">io_threads_per_reactor=4</div>
- </td>
- <td>No</td>
- <td>Number of CPU cores</td>
- </tr>
- <tr>
- <td>http.malformed.input.action</td>
- <td>
- Specify the action to be performed when a malformed
input is detected
- during character set encoding or decoding. Supported
values are
- 'ignore', 'replace' and 'report'. See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/CodingErrorAction.html">CodingErrorAction</a>
- for more details on each of these options.
- <div
class="xmlConf">http.malformed.input.action=ignore</div>
- </td>
- <td>No</td>
- <td>report</td>
- </tr>
- <tr>
- <td>http.unmappable.input.action</td>
- <td>
- Specify the action to be performed when an un-mappable
character is detected
- during character set encoding or decoding. Supported
values are
- 'ignore', 'replace' and 'report'. See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/CodingErrorAction.html">CodingErrorAction</a>
- for more details on each of these options.
- <div
class="xmlConf">http.malformed.input.action=ignore</div>
- </td>
- <td>No</td>
- <td>report</td>
- </tr>
- <tr>
- <td>io_buffer_size</td>
- <td>
- Set the size of the I/O buffers (in bytes) used as the
pipes between HTTP
- listener and sender. Typically, the HTTP listener
would write the incoming
- message data to one of these buffers, and the sender
would read from it to
- send the message out.
- <div class="xmlConf">io_buffer_size=10240</div>
- </td>
- <td>No</td>
- <td>8192</td>
- </tr>
- <tr>
- <td>http.user.agent.preserve</td>
- <td>
- Specify whether Synapse should preserve the User-Agent
header sent by the
- client applications, when forwarding messages to
backend servers. Allowed
- values are either true or false. If set to false,
Synapse will overwrite
- the original User-Agent header value with the string
'Synapse-PT-HttpComponents-NIO'.
- <div
class="xmlConf">http.user.agent.preserve=true</div>
- </td>
- <td>No</td>
- <td>false</td>
- </tr>
- <tr>
- <td>http.server.preserve</td>
- <td>
- Specify whether Synapse should preserve the Server
header sent by the
- backend servers, when forwarding messages to client
applications. Allowed
- values are either true or false. If set to false,
Synapse will overwrite
- the original Server header value with the string
'Synapse-PT-HttpComponents-NIO'.
- <div class="xmlConf">http.server.preserve=false</div>
- </td>
- <td>No</td>
- <td>true</td>
- </tr>
- <tr>
- <td>worker_pool_size_core</td>
- <td>
- Initial size of the internal thread pool used by the
Pass
- Through HTTP transport. This thread pool is used for
mediating
- messages through the Synapse mediation engine. Note
that both HTTP
- listener and sender draw threads from this pool. It is
further shared
- between the HTTP and HTTPS transports. The size of
this thread pool
- determines the capacity of Synapse to mediate
concurrent HTTP messages.
- <div class="xmlConf">worker_pool_size_core=100</div>
- </td>
- <td>No</td>
- <td>40</td>
- </tr>
- <tr>
- <td>worker_pool_size_max</td>
- <td>
- The thread pool used by the Pass Through HTTP
transport grows in size, as
- more and more jobs are submitted to it. This property
determines the
- maximum limit up to which the thread pool may grow. In
other words,
- this property specifies the maximum number of threads
that may ever exist
- in the transport thread pool. Value of this property
must be greater than
- or equal to the vallue of worker_pool_size_core.
- <div class="xmlConf">worker_pool_size_max=500</div>
- </td>
- <td>No</td>
- <td>200</td>
- </tr>
- <tr>
- <td>worker_thread_keepalive_sec</td>
- <td>
- Specify the idle time period (in seconds) for the
excessive threads in
- the Pass Through transport thread pool. Once a thread
in the pool has
- been idle for this duration, it will be removed from
the pool and
- destroyed. This reduces the size of the thread pool,
but the thread pool
- size is not to allowed drop below the value of the
worker_pool_size_core
- property.
- <div
class="xmlConf">worker_thread_keepalive_sec=10</div>
- </td>
- <td>No</td>
- <td>60</td>
- </tr>
- <tr>
- <td>worker_pool_queue_length</td>
- <td>
- Determines the length of the queue used by the Pass
Through transport
- thread pool to store pending jobs. To use an unbounded
queue, set this
- property to -1. If a bounded queue is used, and if the
queue ever gets
- filled to its capacity, any further attempts to submit
jobs will fail,
- causing some messages to be dropped by Synapse.
- <div
class="xmlConf">worker_pool_queue_length=1000</div>
- </td>
- <td>No</td>
- <td>-1</td>
- </tr>
- </table>
- <p>
- Note that all the above settings are optional. In fact the
entire passthru-http.properties
- file is optional. Synapse is programmed with some reasonable
default values (also
- given in the table) for each of the above settings. However,
it is highly
- recommended to tweak the above values to obtain best
performance from the
- Pass Through HTTP transport. At least, consider tuning the
worker_pool_size_core
- and worker_pool_size_max to match the expected load in your
deployment.
- </p>
+ <subsection name="Apache HTTP Core Settings" id="HttpCoreSettings">
+ <p>
+ Following properties control various facets of
+ <a
href="http://hc.apache.org/httpcomponents-core-ga/index.html">Apache HTTP
Core</a>,
+ the framework underlying the Pass Through HTTP transport.
+ </p>
+ <table>
+ <tr>
+ <th>Parameter Name</th>
+ <th>Description/Example</th>
+ <th>Required</th>
+ <th>Default</th>
+ </tr>
+ <tr>
+ <td>http.socket.timeout</td>
+ <td>
+ Set the TCP socket timeout in milliseconds
+ (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT">SO_TIMEOUT</a>).
+ <div
class="xmlConf">http.socket.timeout=20000</div>
+ </td>
+ <td>No</td>
+ <td>60000</td>
+ </tr>
+ <tr>
+ <td>http.connection.timeout</td>
+ <td>
+ Set the TCP connection timeout in milliseconds.
This determines the timeout
+ value for non-blocking connection requests.
Setting this property to
+ 0 disables connection timeout (i.e. no timeout).
+ <div
class="xmlConf">http.connection.timeout=30000</div>
+ </td>
+ <td>No</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>http.nio.interest-ops-queueing</td>
+ <td>
+ Determines whether or not I/O interest operations
are to be queued and
+ executed asynchronously by the I/O reactor thread
or to be applied to
+ the underlying
+ <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/channels/SelectionKey.html">SelectionKey</a>
+ immediately. Allowed values are either 'true' or
'false'.
+ <div
class="xmlConf">http.nio.interest-ops-queueing=false</div>
+ </td>
+ <td>No</td>
+ <td>false</td>
+ </tr>
+ <tr>
+ <td>http.tcp.nodelay</td>
+ <td>
+ Setting this property to 'true' disables
+ <a
href="http://en.wikipedia.org/wiki/Nagle's_algorithm">Nagle's algorithm</a>
+ for the HTTP connections. That is, outgoing data
will not be buffered
+ and aggregated together
+ (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#TCP_NODELAY">TCP_NODELAY</a>).
+ <div class="xmlConf">http.tcp.nodelay=true</div>
+ </td>
+ <td>No</td>
+ <td>true</td>
+ </tr>
+ <tr>
+ <td>http.socket.buffer-size</td>
+ <td>
+ Set the size of the I/O session buffers (in bytes)
used by the transport
+ for reading incoming data and writing outgoing
data.
+ <div
class="xmlConf">http.socket.buffer-size=4096</div>
+ </td>
+ <td>No</td>
+ <td>8192</td>
+ </tr>
+ <tr>
+ <td>http.socket.rcv-buffer-size</td>
+ <td>
+ Set the size of the buffers (in bytes) used by the
underlying platform
+ for incoming network I/O. This value is only a
hint. When set, this is a
+ suggestion to the OS kernel from Synapse about the
size of buffers to
+ use for the data to be received over the socket
+ (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_RCVBUF">SO_RCVBUF</a>).
+ <div
class="xmlConf">http.socket.rcv-buffer-size=4096</div>
+ </td>
+ <td>No</td>
+ <td>8192</td>
+ </tr>
+ <tr>
+ <td>http.socket.snd-buffer-size</td>
+ <td>
+ Set the size of the buffers (in bytes) used by the
underlying platform
+ for outgoing network I/O. This value is only a
hint. When set, this is a
+ suggestion to the OS kernel from Synapse about the
size of buffers to
+ use for the data to be sent over the socket
+ (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_SNDBUF">SO_SNDBUF</a>).
+ <div
class="xmlConf">http.socket.snd-buffer-size=4096</div>
+ </td>
+ <td>No</td>
+ <td>8192</td>
+ </tr>
+ <tr>
+ <td>http.socket.linger</td>
+ <td>
+ Specify the linger-on-close timeout duration (in
milliseconds) for the
+ sockets created by the HTTP transport. Setting to
0 or a negative value
+ disables linger-on-close
+ (See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_LINGER">SO_LINGER</a>).
+ <div class="xmlConf">http.socket.linger=5000</div>
+ </td>
+ <td>No</td>
+ <td>-1</td>
+ </tr>
+ <tr>
+ <td>http.socket.reuseaddr</td>
+ <td>
+ Set the <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_REUSEADDR">SO_REUSEADDR</a>
+ socket option for the sockets created by the HTTP
transport. Accepted
+ values are either 'true' or 'false'.
+ <div
class="xmlConf">http.socket.reuseaddr=true</div>
+ </td>
+ <td>No</td>
+ <td>false</td>
+ </tr>
+ <tr>
+ <td>http.nio.select-interval</td>
+ <td>
+ Set the time interval in milliseconds at which the
I/O reactor wakes up
+ to check for timed out sessions and session
requests.
+ <div
class="xmlConf">http.nio.select-interval=2500</div>
+ </td>
+ <td>No</td>
+ <td>1000</td>
+ </tr>
+ <tr>
+ <td>io_threads_per_reactor</td>
+ <td>
+ Set the number of I/O dispatcher threads to be
used by each I/O reactor.
+ Typically, this property controls the ability of
the HTTP transport
+ to handle concurrent I/O events.
+ It is recommended that this property is set to the
number of CPU cores
+ available for Synapse. By default, Synapse
determines the number of
+ available CPU cores and initializes this setting
accordingly.
+ <div class="xmlConf">io_threads_per_reactor=4</div>
+ </td>
+ <td>No</td>
+ <td>Number of CPU cores</td>
+ </tr>
+ <tr>
+ <td>http.malformed.input.action</td>
+ <td>
+ Specify the action to be performed when a
malformed input is detected
+ during character set encoding or decoding.
Supported values are
+ 'ignore', 'replace' and 'report'. See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/CodingErrorAction.html">CodingErrorAction</a>
+ for more details on each of these options.
+ <div
class="xmlConf">http.malformed.input.action=ignore</div>
+ </td>
+ <td>No</td>
+ <td>report</td>
+ </tr>
+ <tr>
+ <td>http.unmappable.input.action</td>
+ <td>
+ Specify the action to be performed when an
un-mappable character is detected
+ during character set encoding or decoding.
Supported values are
+ 'ignore', 'replace' and 'report'. See <a
href="http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/CodingErrorAction.html">CodingErrorAction</a>
+ for more details on each of these options.
+ <div
class="xmlConf">http.malformed.input.action=ignore</div>
+ </td>
+ <td>No</td>
+ <td>report</td>
+ </tr>
+ </table>
+ </subsection>
+ <subsection name="Synapse HTTP Mediation Settings"
id="SynapseSettings">
+ <p>
+ Following settings determine the behavior of Synapse with
respect to mediating
+ HTTP traffic.
+ </p>
+ <table>
+ <tr>
+ <th>Parameter Name</th>
+ <th>Description/Example</th>
+ <th>Required</th>
+ <th>Default</th>
+ </tr>
+ <tr>
+ <td>io_buffer_size</td>
+ <td>
+ Set the size of the I/O buffers (in bytes) used as
the pipes between HTTP
+ listener and sender. Typically, the HTTP listener
would write the incoming
+ message data to one of these buffers, and the
sender would read from it to
+ send the message out.
+ <div class="xmlConf">io_buffer_size=10240</div>
+ </td>
+ <td>No</td>
+ <td>8192</td>
+ </tr>
+ <tr>
+ <td>http.user.agent.preserve</td>
+ <td>
+ Specify whether Synapse should preserve the
User-Agent header sent by the
+ client applications, when forwarding messages to
backend servers. Allowed
+ values are either true or false. If set to false,
Synapse will overwrite
+ the original User-Agent header value with the
string 'Synapse-PT-HttpComponents-NIO'.
+ <div
class="xmlConf">http.user.agent.preserve=true</div>
+ </td>
+ <td>No</td>
+ <td>false</td>
+ </tr>
+ <tr>
+ <td>http.server.preserve</td>
+ <td>
+ Specify whether Synapse should preserve the Server
header sent by the
+ backend servers, when forwarding messages to
client applications. Allowed
+ values are either true or false. If set to false,
Synapse will overwrite
+ the original Server header value with the string
'Synapse-PT-HttpComponents-NIO'.
+ <div
class="xmlConf">http.server.preserve=false</div>
+ </td>
+ <td>No</td>
+ <td>true</td>
+ </tr>
+ </table>
+ </subsection>
+ <subsection name="Thread Pool Settings" id="ThreadPoolSettings">
+ <p>
+ The Pass Through HTTP transport uses a thread pool for
mediating messages
+ through the Synapse mediation engine. Both HTTP listener
and sender draw threads
+ from this pool. It is further shared between the HTTP and
HTTPS transports. The
+ size of this thread pool determines the capacity of
Synapse to mediate
+ concurrent HTTP messages.
+ </p>
+ <table>
+ <tr>
+ <th>Parameter Name</th>
+ <th>Description/Example</th>
+ <th>Required</th>
+ <th>Default</th>
+ </tr>
+ <tr>
+ <td>worker_pool_size_core</td>
+ <td>
+ Initial the size of the internal thread pool used
by the Pass
+ Through HTTP transport. This is also the minimum
size of the thread pool.
+ That is, the number of threads in the pool is not
allowed to drop
+ below this limit.
+ <div
class="xmlConf">worker_pool_size_core=100</div>
+ </td>
+ <td>No</td>
+ <td>40</td>
+ </tr>
+ <tr>
+ <td>worker_pool_size_max</td>
+ <td>
+ The thread pool used by the Pass Through HTTP
transport grows in size, as
+ more and more jobs are submitted to it. This
property determines the
+ maximum limit up to which the thread pool may
grow. In other words,
+ this property specifies the maximum number of
threads that may ever exist
+ in the transport thread pool. Value of this
property must be greater than
+ or equal to the value of worker_pool_size_core.
+ <div class="xmlConf">worker_pool_size_max=500</div>
+ </td>
+ <td>No</td>
+ <td>200</td>
+ </tr>
+ <tr>
+ <td>worker_thread_keepalive_sec</td>
+ <td>
+ Specify the idle time period (in seconds) for the
excessive threads in
+ the Pass Through transport thread pool. Once a
thread in the pool has
+ been idle for this duration, it will be removed
from the pool and
+ destroyed. This reduces the size of the thread
pool, but the thread pool
+ size is not to allowed drop below the value of the
worker_pool_size_core
+ property.
+ <div
class="xmlConf">worker_thread_keepalive_sec=10</div>
+ </td>
+ <td>No</td>
+ <td>60</td>
+ </tr>
+ <tr>
+ <td>worker_pool_queue_length</td>
+ <td>
+ Determines the length of the queue used by the
Pass Through transport
+ thread pool to store pending jobs. To use an
unbounded queue, set this
+ property to -1. If a bounded queue is used, and if
the queue ever gets
+ filled to its capacity, any further attempts to
submit jobs will fail,
+ causing some messages to be dropped by Synapse.
+ <div
class="xmlConf">worker_pool_queue_length=1000</div>
+ </td>
+ <td>No</td>
+ <td>-1</td>
+ </tr>
+ </table>
+ </subsection>
+ <subsection name="Guidelines for Using Advanced Settings"
id="AdvancedGuidelines">
+ <p>
+ Note that all the above settings are optional. In fact the
entire passthru-http.properties
+ file is optional. Synapse is programmed with some
reasonable default values (also
+ given in the table) for each of the above settings.
However, it is highly
+ recommended to tweak the above values to obtain best
performance from the
+ Pass Through HTTP transport. At least, consider tuning the
worker_pool_size_core
+ and worker_pool_size_max to match the expected load in
your deployment.
+ </p>
+ <p>
+ You might be tempted to configure the transport with a
very large thread pool
+ (e.g. 1000's of threads). But bare in mind that more
threads equals more memory
+ usage. Also, on some operating systems there are
restrictions on the number of
+ threads that can be spawned by an application. Therefore,
do not attempt to set
+ the thread pool size to an unnecessarily large value. Do a
rough estimate of your
+ expected workload (expected number of concurrent users),
and set the thread pool
+ size accordingly. As for setting the number of I/O
dispatcher threads
+ (io_threads_per_reactor), setting it to match the number
of available CPU cores
+ generally results in good performance. Synapse does this
for you by default,
+ so you shouldn't have to do any extra work with regard to
this property.
+ </p>
+ <p>
+ It is highly recommended to run some load tests on Synapse
using your own mediation
+ (sequence/proxy/API) configurations on the actual
production hardware. This will
+ give you a much clear idea of what transport level
properties need to be tuned up
+ in your deployment.
+ </p>
+ </subsection>
<subsection name="Unix/Linux Specific Settings" id="LinuxSettings">
<p>
Users deploying Synapse on Unix/Linux systems are further
advised to set the