BIND 10 #2610: Query for large zone in SQLite datasrc takes a very long time

BIND 10 Development do-not-reply at isc.org
Tue Jan 8 12:39:18 UTC 2013


#2610: Query for large zone in SQLite datasrc takes a very long time
-------------------------------------+-------------------------------------
            Reporter:  vorner        |                        Owner:
                Type:  defect        |                       Status:  new
            Priority:  medium        |                    Milestone:  New
           Component:  data source   |  Tasks
            Keywords:                |                   Resolution:
           Sensitive:  0             |                 CVSS Scoring:
         Sub-Project:  DNS           |              Defect Severity:  N/A
Estimated Difficulty:  0             |  Feature Depending on Ticket:
         Total Hours:  0             |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------

Comment (by vorner):

 So, I looked into it little bit more.

 The indices are there. I just checked.

 It's really because of how the zone looks like. It's somehow broken and
 old
 copy of the .cz zone. It turns out it is missing address records for 3 of
 the
 nameservers (actually, there are no records with their names). This leads
 to
 call to DatabaseClient::Finder::findNoNameResult for each of them. The
 hasSubdomains call takes some time and the findWildcardMatch even more. I
 added
 two more log messages to the method to see what takes the time, one at the
 beginning (`DATASRC_DATABASE_FIND_NONAME`) and the second just before the
 findWildcardMatch (`TRY_WILDCARD`). Here's what I get.

 {{{
 2013-01-08 13:34:07.352 DEBUG [b10-auth.auth/18468] AUTH_PACKET_RECEIVED
 message received:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64678
 ;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

 ;; OPT PSEUDOSECTION:
 ; EDNS: version: 0, flags:; udp: 4096

 ;; QUESTION SECTION:
 ;cz. IN SOA

 2013-01-08 13:34:07.352 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record cz./SOA/IN
 2013-01-08 13:34:07.353 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset cz. 18000 IN SOA a.ns.nic.cz. hostmaster.nic.cz.
 1283265961 900 300 604800 900

 2013-01-08 13:34:07.353 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record cz./NS/IN
 2013-01-08 13:34:07.353 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset cz. 18000 IN NS a.ns.nic.cz.
 cz. 18000 IN NS b.ns.nic.cz.
 cz. 18000 IN NS c.ns.nic.cz.
 cz. 18000 IN NS d.ns.nic.cz.
 cz. 18000 IN NS f.ns.nic.cz.

 2013-01-08 13:34:07.353 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record a.ns.nic.cz./A/IN
 2013-01-08 13:34:07.354 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset a.ns.nic.cz. 18000 IN A 194.0.12.1

 2013-01-08 13:34:07.354 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record a.ns.nic.cz./AAAA/IN
 2013-01-08 13:34:07.354 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset a.ns.nic.cz. 18000 IN AAAA 2001:678:f::1

 2013-01-08 13:34:07.354 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record b.ns.nic.cz./A/IN
 2013-01-08 13:34:07.354 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset b.ns.nic.cz. 18000 IN A 194.0.13.1

 2013-01-08 13:34:07.354 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record b.ns.nic.cz./AAAA/IN
 2013-01-08 13:34:07.355 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset b.ns.nic.cz. 18000 IN AAAA 2001:678:10::1

 2013-01-08 13:34:07.355 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record c.ns.nic.cz./A/IN
 2013-01-08 13:34:07.355 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_NONAME Special cases for no such zone c.ns.nic.cz.
 2013-01-08 13:34:08.395 DEBUG [b10-auth.datasrc/18468] TRY_WILDCARD Trying
 wildcard c.ns.nic.cz.
 2013-01-08 13:34:10.424 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_NO_MATCH not match for c.ns.nic.cz./A/IN in
 sqlite3_zone.sqlite3
 2013-01-08 13:34:10.424 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record c.ns.nic.cz./AAAA/IN
 2013-01-08 13:34:10.425 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_NONAME Special cases for no such zone c.ns.nic.cz.
 2013-01-08 13:34:11.455 DEBUG [b10-auth.datasrc/18468] TRY_WILDCARD Trying
 wildcard c.ns.nic.cz.
 2013-01-08 13:34:13.502 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_NO_MATCH not match for c.ns.nic.cz./AAAA/IN in
 sqlite3_zone.sqlite3
 2013-01-08 13:34:13.502 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record d.ns.nic.cz./A/IN
 2013-01-08 13:34:13.503 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset d.ns.nic.cz. 18000 IN A 193.29.206.1

 2013-01-08 13:34:13.503 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record d.ns.nic.cz./AAAA/IN
 2013-01-08 13:34:13.503 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FOUND_RRSET search in datasource sqlite3_zone.sqlite3
 resulted in RRset d.ns.nic.cz. 18000 IN AAAA 2001:678:1::1

 2013-01-08 13:34:13.504 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record f.ns.nic.cz./A/IN
 2013-01-08 13:34:13.504 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_NONAME Special cases for no such zone f.ns.nic.cz.
 2013-01-08 13:34:14.520 DEBUG [b10-auth.datasrc/18468] TRY_WILDCARD Trying
 wildcard f.ns.nic.cz.
 2013-01-08 13:34:16.583 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_NO_MATCH not match for f.ns.nic.cz./A/IN in
 sqlite3_zone.sqlite3
 2013-01-08 13:34:16.583 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_RECORDS looking in datasource sqlite3_zone.sqlite3
 for record f.ns.nic.cz./AAAA/IN
 2013-01-08 13:34:16.584 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_FIND_NONAME Special cases for no such zone f.ns.nic.cz.
 2013-01-08 13:34:17.605 DEBUG [b10-auth.datasrc/18468] TRY_WILDCARD Trying
 wildcard f.ns.nic.cz.
 2013-01-08 13:34:19.652 DEBUG [b10-auth.datasrc/18468]
 DATASRC_DATABASE_NO_MATCH not match for f.ns.nic.cz./AAAA/IN in
 sqlite3_zone.sqlite3
 2013-01-08 13:34:19.653 DEBUG [b10-auth.auth/18468]
 AUTH_SEND_NORMAL_RESPONSE sending a normal response (297 bytes):
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64678
 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 8

 ;; OPT PSEUDOSECTION:
 ; EDNS: version: 0, flags:; udp: 4096

 ;; QUESTION SECTION:
 ;cz. IN SOA

 ;; ANSWER SECTION:
 cz. 18000 IN SOA a.ns.nic.cz. hostmaster.nic.cz. 1283265961 900 300 604800
 900

 ;; AUTHORITY SECTION:
 cz. 18000 IN NS a.ns.nic.cz.
 cz. 18000 IN NS b.ns.nic.cz.
 cz. 18000 IN NS c.ns.nic.cz.
 cz. 18000 IN NS d.ns.nic.cz.
 cz. 18000 IN NS f.ns.nic.cz.

 ;; ADDITIONAL SECTION:
 a.ns.nic.cz. 18000 IN A 194.0.12.1
 a.ns.nic.cz. 18000 IN AAAA 2001:678:f::1
 b.ns.nic.cz. 18000 IN A 194.0.13.1
 b.ns.nic.cz. 18000 IN AAAA 2001:678:10::1
 d.ns.nic.cz. 18000 IN A 193.29.206.1
 d.ns.nic.cz. 18000 IN AAAA 2001:678:1::1
 }}}

 We may be missing some indexes for matches of this type.

-- 
Ticket URL: <http://bind10.isc.org/ticket/2610#comment:7>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list