By default ATS uses one separate thread for accept(2). Due to T236754, we have a very high number of connections per second between varnish-fe and ats-be. Indeed the accept thread on a text ats-be looks fairly busy:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 36064 traffic+ 20 0 17.975g 0.014t 11440 R 46.7 3.9 45:24.75 [ET_NET 53] 36107 traffic+ 20 0 17.975g 0.014t 11440 S 13.3 3.9 182:54.64 [ACCEPT 0:3128] 36011 traffic+ 20 0 17.975g 0.014t 11440 S 6.7 3.9 36:11.97 [ET_NET 0] 36012 traffic+ 20 0 17.975g 0.014t 11440 S 6.7 3.9 36:15.92 [ET_NET 1] 36014 traffic+ 20 0 17.975g 0.014t 11440 S 6.7 3.9 36:28.77 [ET_NET 3] 36017 traffic+ 20 0 17.975g 0.014t 11440 S 6.7 3.9 36:30.23 [ET_NET 6] 36018 traffic+ 20 0 17.975g 0.014t 11440 S 6.7 3.9 35:33.60 [ET_NET 7] 36020 traffic+ 20 0 17.975g 0.014t 11440 S 6.7 3.9 35:46.78 [ET_NET 9]
The setting proxy.config.accept_threads allows to define how many threads should be used for accept. Setting it to 0 makes ET_NET threads take care of accept too. We should consider tweaking it on a canary host and observe any changes.