Problema: todos os outros dispositivos na rede passam por atrasos, páginas de e-mail, queda de bate-papo, etc., enquanto isso está em execução.
Este é um post cruzado do stackoverflow, eu posso ter usado o site errado!
Detalhes:
Usando libcurl para isso
Debian 7 - Intel i5 - 8 GB de RAM
Conexão Comcast Business 75/15 (Cisco DPC3939B)
Execução de encadeamentos 75 (testados até 200) com o Parallel ForkManager
20 Threads é quase aceitável - mas muito lento para as minhas necessidades
Tempo limite: CURLOPT_CONNECTTIMEOUT_MS, 5000 + CURLOPT_TIMEOUT_MS, 10000
Rodada robin dns usando opções girar em resolv.conf
Todas as conexões são para sites independentes e exclusivos - não há reutilização de conexões aqui
A minha matemática está errada ao assumir que as conexões por segundo são threads * timeout?
Notas: Os recursos do servidor estão virtualmente intocados - a média de carga do .10 e isso é principalmente o MySQL que mantém o controle das coisas. A aranha e o servidor estão funcionando perfeitamente, eu posso conseguir 8 milhões de visitas por dia se eu quisesse. Simplesmente não posso usar a rede para trabalhar durante esse processo.
Minha maior epifania em anos de ajustes foi mudar os servidores DNS que os outros dispositivos usam - para evitar qualquer tipo de tempo limite ou limitação imposto pelos servidores de dns que a caixa do Linux está usando. Isso não teve o efeito que eu esperava.
Os outros dispositivos como o meu laptop Windows 7 não podem visitar várias guias, os sites podem ter tempo limite - não podem executar rsync com muitos pequenos arquivos transferidos - mas podem executar o speedtest.net - assim que carregar a largura de banda disponível ainda é quase 90% o que estou comprando. Então baixar um único arquivo grande não é um problema, mas se movimentar e abrir mais conexões é.
Uma vez conectei o servidor através de um roteador dd-wrt apenas para obter mais informações sobre o que está acontecendo - e as conexões ativas eventualmente atingirão o máximo de 4096 se estiverem executando 200 threads. Eu realmente sinto que o gateway / modem não pode processar todas as conexões - mas eu também sinto que 100 conexões por segundo devem ser muito aceitáveis - e algo não está sendo fechado corretamente.