Troubleshooting Timeouts and Performance Issues in Traefik Setup

I am new to Traefik. I am trying to use it to help us solve a performance issue that we have.

I have a system running on a windows server, that receives traffic from https, and distributes it to 3 services:

  • activemq, identified by path /mq. Handling long running socket connections.
  • internal service, identified by path /server
  • main app, running on apache 32bit, getting the rest of the traffic.

It used to run on apache, but we run into a performance issue, since apache 32bit can't handle more than ~600 socket connections, coupled with the ssl termination.

We are now trying to check performance with Traefik. It seems to handle better the socket connections, but we are getting timeouts from for the apache connections.

Assuming that the apache can handle the traffic (we have tested it stand alone with 10x the amount of traffic), anyone has experience with similar setup and can estimate how many connections we should be able to expect?

Our yaml configuration is below. Anything that we can do to improve the performance?

[http.routers.dashboard]
entryPoints = ["https"]
service = "api@internal"
rule = "Host(`example.com`) && PathPrefix(`/dashboard`)"
[http.routers.dashboard.tls]

[http.routers.mq]
entryPoints = ["https"]
service = "mq"
rule = "Host(`example.com`) && PathPrefix(`/mq`)"
middlewares = ["remove-mq-prefix"]
[http.routers.mq.tls]

[http.routers.server]
entryPoints = ["https"]
service = "server"
rule = "Host(`example.com`) && PathPrefix(`/server`)"
middlewares = ["remove-server-prefix", "normalize-path"]
[http.routers.server.tls]

[http.routers.web]
entryPoints = ["https"]
service = "web"
rule = "Host(`example.com`)"
[http.routers.web.tls]

[http.routers.webclient]
entryPoints = ["https"]
service = "webclient"
rule = "Host(`example.com`) && PathPrefix(`/webclient`)"
[http.routers.webclient.tls]

[[http.services.mq.loadBalancer.servers]]
url = "http://127.0.0.1:43020/"

[[http.services.server.loadBalancer.servers]]
url = "http://127.0.0.1:43000/"

[[http.services.web.loadBalancer.servers]]
url = "http://127.0.0.1:8080/"

[[http.services.webclient.loadBalancer.servers]]
url = "http://127.0.0.1:8080"

[[tls.certificates]]
certFile = "example.com.crt"
keyFile = "example.com.key"

[http.middlewares.remove-server-prefix.stripPrefix]
prefixes = ["/server", "/server/"]

[http.middlewares.remove-mq-prefix.stripPrefix]
prefixes = ["/mq"]

[http.middlewares.normalize-path.replacePathRegex]
regex = "/+"
replacement = "/"

I wish it was a yaml configuration, but it is (in my opinion) hard to read toml format :wink:

Note that the router for Traefik dashboard needs to include paths /dashboard and /api.

If you still run the old limited Apache, how should a component in between reduce the traffic?