Skip to content

Performance Improvements #397

@mageddo

Description

@mageddo

Pre-load docker containers hostnames

Noticed 50% of the query time is spent by trying to solve docker containers, the process to check if any container matches to a given hostname is composed of many steps,

It would be faster if DPS watch for docker container events instead of query docker hostnames using the docker api for every dns query.

Logs

23:21:59.466 [Thread-14      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=45   m=solve                           status=solveReq, kind=udp, query=query=A:uol.com.br
23:21:59.490 [Thread-14      ] DEB c.m.d.server.dns.solver.SolverCachedRemote        l=32   m=lambda$handle$0                 status=remoteHotLoading, query=query=A:uol.com.br
23:21:59.509 [Thread-14      ] DEB c.m.dnsproxyserver.server.dns.solver.SolverCache  l=46   m=lambda$handleRes$0              status=hotload, k=A-uol.com.br, ttl=PT5M, simpleMsg=query=A:uol.com.br
23:21:59.509 [Thread-14      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=84   m=solve0                          status=solved, currentSolverTime=20, totalTime=43, solver=SolverCachedRemote, req=query=A:uol.com.br, res=rc=0, res=uol.com.br.    43  IN  A  200.147.35.149
23:21:59.509 [Thread-14      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=99   m=solve0                          status=solveSummary, summary=[(SolverSystem,0), (SolverDocker,22), (SolverLocalDB,1), (SolverCachedRemote,20)]
23:21:59.509 [Thread-14      ] DEB c.m.dnsproxyserver.server.dns.solver.SolverCache  l=46   m=lambda$handleRes$0              status=hotload, k=A-uol.com.br, ttl=PT20S, simpleMsg=query=A:uol.com.br
23:21:59.509 [Thread-14      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=50   m=solve                           status=solveRes, kind=udp, time=43, res=rc=0, res=uol.com.br.    43  IN  A  200.147.35.149, req=query=A:uol.com.br
23:21:59.510 [Thread-14      ] DEB com.mageddo.dnsproxyserver.server.dns.UDPServer   l=58   m=handle                          status=success, query=query=A:uol.com.br, res=rc=0, res=uol.com.br.    43  IN  A  200.147.35.149, serverAddr=/0:0:0:0:0:0:0:0, clientAddr=/192.168.0.128:39531, dataLength=512, datagramLength=28
23:21:59.510 [Thread-15      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=45   m=solve                           status=solveReq, kind=udp, query=query=AAAA:uol.com.br
23:21:59.523 [Thread-15      ] DEB c.m.d.server.dns.solver.SolverCachedRemote        l=32   m=lambda$handle$0                 status=remoteHotLoading, query=query=AAAA:uol.com.br
23:21:59.542 [Thread-15      ] DEB c.m.dnsproxyserver.server.dns.solver.SolverCache  l=46   m=lambda$handleRes$0              status=hotload, k=AAAA-uol.com.br, ttl=PT5M, simpleMsg=query=AAAA:uol.com.br
23:21:59.542 [Thread-15      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=84   m=solve0                          status=solved, currentSolverTime=19, totalTime=31, solver=SolverCachedRemote, req=query=AAAA:uol.com.br, res=rc=0, res=uol.com.br.    9  IN  AAAA  2804:49c:3102:401:ffff:ffff:ffff:36
23:21:59.542 [Thread-15      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=99   m=solve0                          status=solveSummary, summary=[(SolverSystem,0), (SolverDocker,11), (SolverLocalDB,1), (SolverCachedRemote,19)]
23:21:59.542 [Thread-15      ] DEB c.m.dnsproxyserver.server.dns.solver.SolverCache  l=46   m=lambda$handleRes$0              status=hotload, k=AAAA-uol.com.br, ttl=PT20S, simpleMsg=query=AAAA:uol.com.br
23:21:59.542 [Thread-15      ] DEB c.m.d.server.dns.RequestHandlerDefault            l=50   m=solve                           status=solveRes, kind=udp, time=32, res=rc=0, res=uol.com.br.    9  IN  AAAA  2804:49c:3102:401:ffff:ffff:ffff:36, req=query=AAAA:uol.com.br
23:21:59.543 [Thread-15      ] DEB com.mageddo.dnsproxyserver.server.dns.UDPServer   l=58   m=handle                          status=success, query=query=AAAA:uol.com.br, res=rc=0, res=uol.com.br.    9  IN  AAAA  2804:49c:3102:401:ffff:ffff:ffff:36, serverAddr=/0:0:0:0:0:0:0:0, clientAddr=/192.168.0.128:49244, dataLength=512, datagramLength=28

Caches the LocalDB

Caches the localdb and store it in a model of key value, will also help to increase performance and reduce disk load usage.

References to watch file changes so the cache can be automatically updated

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions