Перегрузка шлюза / модема при запуске веб-паука
Проблема: все другие устройства в сети испытывают серьезную задержку и превышение времени ожидания веб-страниц, электронной почты, чата и т. Д. Во время работы.
Это кросс-пост от stackoverflow, возможно, я использовал не тот сайт!
Подробности:
Используя libcurl для этого
Debian 7 - Intel i5 - 8 ГБ оперативной памяти
Соединение Comcast Business 75/15 (Cisco DPC3939B)
Запуск 75 (проверено до 200) потоков с помощью Parallel ForkManager
20 потоков почти приемлемо - но слишком медленно для моих нужд
Тайм-аут: CURLOPT_CONNECTTIMEOUT_MS,5000 + CURLOPT_TIMEOUT_MS,10000
Круговой Робот DNS с использованием параметров поворота в resolv.conf
Все соединения с уникальными независимыми сайтами - здесь нет повторного использования соединений
Неужели моя математика неверна, если предположить, что количество соединений в секунду - это поток * тайм-аут?
Примечания: Ресурсы сервера практически не тронуты - средняя загрузка.10, и это в основном MySQL, отслеживающий вещи. Паук и сервер работают безупречно, я могу достичь 8 миллионов посещений в день, если захочу. Просто не могу использовать сеть для выполнения работы во время этого процесса.
Моим самым большим прозрением за годы настройки было изменение DNS-серверов, которые используют другие устройства, - чтобы избежать какого-либо таймаута или ограничения, налагаемого DNS-серверами, которые использует Linux. Это не имело эффекта, на который я надеялся.
Другие устройства, такие как мой ноутбук с Windows 7, не могут посещать несколько вкладок, веб-сайты могут работать по таймауту - не могут запустить rsync с передачей большого количества мелких файлов - но могут работать speedtest.net - после загрузки доступная пропускная способность по-прежнему составляет почти 90% от того, что я м покупаю. Таким образом, загрузка одного большого файла не является проблемой, но перемещение и открытие большего количества соединений - это проблема.
Однажды я подключил сервер через маршрутизатор dd-wrt просто для получения дополнительной информации о том, что происходит - и активные подключения в конечном итоге достигнут максимума 4096, если запущено 200 потоков. Я действительно чувствую, что шлюз / модем не может обработать все соединения - но я также чувствую, что 100 соединений в секунду должны быть очень приемлемыми - и что-то не закрывается должным образом.