Ответ 1
Что ж, поскольку ваши потоки будут связаны с вводом-выводом, хорошая новость заключается в том, что оба потока Ruby 1.8 и 1.9 будут работать для этого. В Ruby 1.8 используются "потоки пользовательского пространства", то есть при создании новых потоков в Ruby новые потоки ОС не создаются. Это плохо для многозадачности ЦП, так как на самом деле одновременно работает только один поток Ruby, но хорошо для многозадачности ввода-вывода. Ruby 1.9 использует реальные потоки, и подойдет для любого из них.
Количество потоков, которые вы можете создать, зависит от вашей системы. Конечно, существуют практические ограничения, но вы, вероятно, не хотите приближаться к ним. Во-первых, если серверы, с которых вы загружаетесь, не очень медленные и ваше соединение не очень быстрое, всего несколько потоков будут насыщать ваше интернет-соединение. Кроме того, если вы захватываете много страниц с одного сервера, то одновременная выдача 500 запросов из 500 потоков не принесет никакой пользы.
Я бы начал с малого: 10 или 20 потоков работают одновременно. Увеличьте или уменьшите это в зависимости от нагрузки на сервер, пропускной способности и т.д. Также существует проблема одновременных подключений к базе данных MySQL. В зависимости от того, как настроены ваши таблицы и насколько они велики, попытка одновременно вставить слишком много данных не будет работать очень хорошо.