Unfortunately, I don't know of any simple answer (perhaps, others might know)
to configure the active connection limit.
Like I mentioned in my previous reply, the number of simultaneous/active
connections that ATS can handle really depends on how much memory each of those
connections are consuming. The memory consumed by a single (active) connection
typically includes the (various) context/state memory associated with the
connection, any transient/permanent iobuffers needed to complete the download
etc. (Note also that the number of active connections (and their associated
context/state and other memory) also include the origin (outbound) connections
that ATS needs to make to download the objects). So, as such, it varies for
each use case and end-to-end latency factors in a given deployment. Also, note
that even *non-active* connections (assuming, you are enabling
persistent/keepalive connections) consume some small amount of memory as well.
One approach is to actually run tests using some load generator (e.g
ab/httpperf etc) to understand the limits in your specific use case and
configure based on that.
Thanks,
Sudheer
On Saturday, February 13, 2016 11:21 AM, Muhammad Faisal
<[email protected]> wrote:
#yiv7115368469 body {font-size:13px;}Thanks Sudheer. What i have understood
the below details is:
Assumption: 200kbps/active connectionWith default Con throttle: 30000Active
Conns: 9000Per ATS Server the total Network Throughput: 9000x200 = 1.8Gbps
Am I interpreting it correctly?
I'm still confuse on active connection limit relation with memory like we have
for 1MB RAM/gigabyte Cache Disk.
-- ThanksF.
irc: zoot
On Sun, 14 Feb 2016 00:01:46 +0500, Sudheer Vinukonda <[email protected]>
wrote:
proxy.config.net.connections_throttle is primarily limited by amount of memory
available to ATS (minus the configured amount of RAM cache) in the system. For
example, if your system has 16g of RAM and your provisioned RAM cache of 8g,
assuming there's no other process running in the system that takes a lot of
memory, then ATS uses up all of the remaining 8g for connections (and other
contexts, iobuffers etc).
When there's no more memory available for ATS to allocate for new connections,
it could result in swap activity and performance degradation.
The actual bandwidth throughput may or may not directly impact the maximum
number of connections the system can handle, since the bandwidth throughput
depends on the type of the use case (size of response body). If your use case
is video, with typically larger size objects (compared to web), then you are
more likely to be limited by the network throughput than number of connections.
Typical (large scale) production deployments use some sort of load balancer to
distribute the connections in a cluster of ATS and are generally liberal with
the proxy.config.net.connections_throttle setting (letting the connection load
be balanced/limited at the LB level, rather than at the individual ATS host
level).
Thanks,
Sudheer
On Friday, February 12, 2016, 8:33 PM, Muhammad Faisal <[email protected]>
wrote:
Hi All,I have been through previous posts on mail archives and understood that
CPU is not much of a concern when scaling ATS for high load. The actual
performance drivers are RAM and Disk space which is approx. 1MB/Gigabyte Disk.
I'm a bit confuse on connection throttle variable which is set by default to
30000 and docs says it can handle ~9000 active connections.
proxy.config.net.connections_throttle What could be if: Peak Traffic Rate =
1Gbps: A single deployment as per below hardware specifications will be enough?
How connections throttle can be scaled to serve 50,000 active connections?What
is the upper limit for this configuration variable? and relation with the OS
and Hardware? How much traffic rate and active connections can be served
with: 2x 8-Core Xeon CPUs (16-Cores)24 GB RAM4x 1Gbit NIC4x 1TB HDD (Raw disks)
--
Thanks
F.
irc: zoot