CPU utilization does not exceed 40% during peak traffic. I also checked the
number of sockets in connection pending state (SYN_RECV) and it never goes
above 20, so I suppose accepting incoming connections is not the bottleneck.

What about the number of worker threads? I'm using autoconfig with default
scale factor (1.5) which on my system (8 cores) creates 27 threads for
traffic_server. Does it make sense to increase the scale factor if my CPU
utilization is not high? will this improve the overall performance? What
about stacksize?

How should I go on about finding the cause of some of the clients not being
able to connect occasionally?

Thanks
Mateusz

On Fri, Dec 29, 2017 at 7:53 AM, John Plevyak <[email protected]> wrote:

>
> What is your CPU utilization?  I would think you would be mostly idle in
> which case it isn't a problem with the accept thread.  The reason there is
> only one accept thread is that in the past more than one has resulted in
> lock contention in the OS around the single file descriptor for the accept
> port, and the accept thread does nothing but accept() and queue the new
> connection on net worker threads.
>
>
>
> On Thu, Dec 28, 2017 at 12:58 PM, Mateusz Zajakala <[email protected]>
> wrote:
>
>> Hi,
>>
>> I'm trying to optimize the throughput of ATS 6.2.0 running on 16G / 8
>> cores server. ATS handles up to 7 Gbps of traffic (circa 500 requests /
>> second) serving up to 80% of traffic from ram-disk-based cache.
>>
>> The problem I'm seeing is that from time to time my http clients can't
>> connect to the server reasonably fast (I define this as 1 second to
>> establish TCP conn). Unfortunately, http keep alive is not used by clients,
>> so those 500 request / second are all made over new TCP connections.
>> Clients connect, retrieve the file and disconnect. I do realize the
>> overheads, but this is not something I can easily change (client-side)...
>>
>> I'm wondering what I can do to improve the performance and eliminate
>> those failed connection attempts. Some ideas I have tried
>> - 30000 connection throttle in records.config (afaik this also sets the
>> max no of open files for ATS)
>> - tcp_fin_timeout is set to 1 - I'm not running out of ports because of
>> sockets stuck in TIME_WAIT, I have checked. At any given time I have no
>> more than 1k TCP connections open
>>
>> Unfortunately, I'm not sure where these incomng connections are
>> dropped/stuck and I'm not sure which TCP stats would help understanding
>> this. I have also not tweaked around default Centos 7 TCP settings as I
>> don't feel competent enough.
>>
>> One thing that caught my attention is proxy.config.accept_threads value
>> set to 1 (default). This seems really low given the traffic, but I read
>> somewhere that it's best left at that. Can you please comment on that?
>> Shouldn't this value be adjusted (e.g. 4 or more)? Or even move the accepts
>> to worker threads?
>>
>> I'm not seeing any meaningful errors in ATS logs, but there are no debug
>> tsgs enabled. Any suggestion on how to debug / improve much appreciated.
>>
>> Thanks
>> Mateusz
>>
>>
>>
>

Reply via email to