I use ispconfig but only for managing dns records of many domains. The problemI have started about 2 weeks ago where I noticed that DNS records were not being propagated and on checking I found that this script /usr/local/ispconfig/server/server.php which is run via cron had freezed and there were 2 more similar processes (killed them). Now because of this freeze, there's a trail of unprocessed datalog totalling about 68000 (previously 200K) as of now that haven't been applied by the script mentioned above. By monitoring the file /var/log/ispconfig/ispconfig.log, I can see it takes about 20 seconds for one datalog entry to be processed particularly for one domain with many records (~2121). There are still more dns record updates being done by clients but they are not being applied because of this long trail that is taking forever to be applied. Is there a way to speed up this process?
The time it takes to process a domain depends on the number of records and of a single domain has about 2000 sub-records, then it may take 20 seconds as the config gets tested for each sub-record with named-checkzone. The only thing I might think of is that you comment out the zone checking in the bind plugin. Or you skip all changes in the queue and then do a resync of all zons (makes sense only if this is less than letting it process the current changes).
Thanks for the response. I want to consider disabling zone checking. This involves commenting out actual code in /usr/local/ispconfig/server/plugins-enabled/bind_plugin.inc.php. Right? ie line 131 to 138 in the following code block: PHP: 126 file_put_contents($filename, $tpl->grab());127 chown($filename, escapeshellcmd($dns_config['bind_user']));128 chgrp($filename, escapeshellcmd($dns_config['bind_group']));129130 //* Check the zonefile131 if(is_file($filename.'.err')) unlink($filename.'.err');132 exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status);133 if($return_status === 0) {134 $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG);135 } else {136 $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN);137 rename($filename, $filename.'.err');138 }139 unset($tpl);140 unset($records);