Мне нужно проверить 200 000 000 (200 000 000) доменов на доступность и информацию о CMS.
Я использую php 7.1 и имитирую многопоточную проверку.
Я проверил первые 1000000 доменов из базы данных, используя другое количество параллельных потоков. Как только я это сделал, я столкнулся с проблемой, что с увеличением количества потоков количество доменов, которые не отвечают в течение 30 секунд таймаута, сильно увеличивается. Вот результаты.
1. 1000 потоков
ТЕСТ: 1000000 доменов, 1000 параллельных потоков, средняя загрузка полосы пропускания 85 Мбит, время проверки 1 час. РЕЗУЛЬТАТ: 65% успешно решены, 35% не были разрешены по таймауту.
2. 300 потоков
ТЕСТ: 1000000 доменов, 300 параллельных потоков, средняя загрузка полосы пропускания 70 Мбит, время проверки 2 часа. РЕЗУЛЬТАТ: 85% успешно решены, 15% не были разрешены по таймауту.
Как видим, увеличивая количество потоков в 3 раза, мы не получаем увеличения пропускной способности еще в 3 раза. Мы получили огромное увеличение количества доменов, которые не были разрешены \ открыты по таймауту. При этом скорость проверки увеличилась в 2 раза.
Где узкое место проверки? Как я могу использовать полную пропускную способность 500 Мбит? Должен ли я использовать собственный DNS-сервер, и если да, то какова правильная конфигурация для этого? Любые идеи или помощь приветствуются.
Google DNS, вероятно, ограничивает вашу скорость. Использование вашего собственного рекурсивного преобразователя DNS - или нескольких из них - должно быть шагом 1.
Я попробовал привязать (DNS-сервер) с его конфигурацией по умолчанию, не настраивая его. Я получил ОГРОМНУЮ нагрузку на привязку, и результаты были примерно такими же.
Есть ли какие-нибудь идеи о том, как настроить привязку для обработки запросов 200–500 тыс. В день? Мы можем получить другой сервер просто как DNS-сервер. Может быть, мы можем использовать альтернативный DNS-сервер (без привязки)?