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