|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64306.1603 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
24.01.2011, 19:55
|
#1
|
Senior Member
Регистрация: 23.11.2007
Сообщений: 141
Бабло: $9970
|
multi curl и centos: ограничение потоков
Столкнулся с неприятной проблемой.
centos 5.5
Curl 7.21.3
php 5.3.5
При попытке запустить простой парсер списка урлов через мульти курл хотя бы в 50-100 потоков - получаю какой то "затык". Если поставить 100 потоков - вообще ничего не приходит в ответ, и сам multi_curl_exec висит очень долго, хотя по сути должен исполнятся почти моментально. Если поставить потоков 10-20 - все нормально приходит в ответ.
Самое важное: если все тоже самое запустить с винды через впн на этом самом хосте - никаких ограничений нет, все соединения проходят, хоть 200-300. Т.е. режет не ДЦ а какие то проблемы либо в centos, либо в curl под linux =((
Пробывал включать curl_verbose: просто открывается сотня Trying to connect [айпи] - и ноль ответа.
заебалоуже
|
|
|
24.01.2011, 20:18
|
#2
|
Senior Member
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
|
бляяя, у меня тоже самое. Попробуй для теста тайамуты слонячие поставь. Если будет больше потоков работать, то в точности как у меня будет.
|
|
|
24.01.2011, 20:54
|
#3
|
Senior Member
Регистрация: 23.11.2007
Сообщений: 141
Бабло: $9970
ТС -->
|
ТС
Цитата:
Сообщение от TerVer
бляяя, у меня тоже самое. Попробуй для теста тайамуты слонячие поставь. Если будет больше потоков работать, то в точности как у меня будет.
|
да там часть приходит ответ, но таааак медленно. Смысл в том что быстрее всего работает при 10 потоках. Чем больше потоков - тем медленнее. curl_multi_exec вообще по несколько минут висит, когда на винде он за милисекунды пролетает.
|
|
|
24.01.2011, 22:38
|
#4
|
Senior Member
Регистрация: 03.11.2010
Сообщений: 285
Бабло: $65960
|
Вчера тож решил одну херню набросать. Поставил 10 потоков, смотрю работает вроде. Зарядил 200 - вот че успело с первых открывшихся потоков вытянуть, упало в результаты а дальше затык. pycurl + ubuntu. Переделал на urllib2.
|
|
|
24.01.2011, 22:46
|
#5
|
Профи Интернет коммерции
Регистрация: 04.04.2007
Сообщений: 2,344
Бабло: $456535
|
а есть решение какое?
чтобы стопроцентно потоки расширить
|
|
|
25.01.2011, 01:47
|
#6
|
:(
Регистрация: 25.11.2008
Сообщений: 759
Бабло: $94392
|
попробуй
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
для pycurl
curl.setopt(curl.NOSIGNAL, 1)
__________________
Знать путь и пройти его — не одно и то же. Pharmcash & PharmcashUSA - знаем, проходили... Лидеры в фарме
|
|
|
25.01.2011, 02:06
|
#7
|
Senior Member
Регистрация: 15.04.2007
Сообщений: 133
Бабло: $12765
|
ТС, погугли на предмет установки либы c-ares. Там фишка в том, что в никсах curl скомпилирован без поддержки этой либы, в винде сразу с поддержкой. Либа отвечает за асинхронную работу с DNS.
Если у тебя в списке URL попадаются нерезолвящиеся NSы, то без c-ares у тебя все потоки будут ждать пока отрезолвится или отлетит по таймауту этот поток.
|
|
|
25.01.2011, 03:11
|
#8
|
Senior Member
Регистрация: 28.11.2009
Сообщений: 1,800
Бабло: $299365
|
Не юзайте мультикурл и не будет проблем... Толку от него мало.
|
|
|
25.01.2011, 05:15
|
#9
|
Je suis moine ivre
Регистрация: 03.03.2009
Сообщений: 15,268
Бабло: $797172957
|
Что использовать?
|
|
|
25.01.2011, 09:56
|
#10
|
Senior Member
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
|
Цитата:
Сообщение от y4b53
попробуй
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
|
о, мне вроде помогло, щас еще потестю
|
|
|
|