Re[2]: Потоки или процессы?
От: Geralt  
Дата: 31.12.04 07:10
Оценка:
Большое спасибо за ответ.

A>Сканер пишем?

Скорее чекер живых URL с некоторой дополнительной функциональностью.

G>>1. Форк и однонаправленный канал.

A>Для данной задачи -> в топку
Я тоже так рассуждал. От 30-40 форков в секунду ни одна система не будет в восторге.

G>>2. Префорк, SysV IPC и однонаправленный канал.

A>Приемлимо, но слишком простая задача, для этого... к тому же если надо сразу по 1000 ури сканить... 1000 процессов рожать?
На перле у меня получалось родить 100 процессов, но там каждый процесс включает в себя интерпретатор и весит около 5-8 метров. Плюс какие-то неясные проблемы с sysv IPC, которые не позволяли изменять шаровый массив размером более 10 элементов, поэтому приходилось действовать по следующей схеме: родитель проверяет пуст ли хеш параметров, если да, локает, пишет в него, анлокает. Дочерние процессы "набрасываются" на хеш. Тот, кто успевает его локнуть получает параметры, опустошает и анлокает. Родитель замечает, что хэш пуст и пишет в него новые значения. И т.д. Таким образом в секунду происходило 30-60 локов, анлоков и записей в шаровую переменную, что тоже очень сильно грузило систему.

G>>4. Претрединг.

A>Другое название Job Manager. Тоже что и 2, но тоже быстрее. И тоже тут избыточно.
В обще-то я склонялся к этому варианту т.к. считал его самым быстрым и наименее ресурсоемким.

A>Для данной конкертной задачи это все нафиг не нужно.... быстрее всего будет работать FSM в одном процессе.

What does FSM mean? =)

A>Вот библиотека, которая позволяет реализовать FSM в пределах одного процесса без всякого гимора.

A>http://www.monkey.org/~provos/libevent/
Уже изучаю. Большое спасибо.

A>ЗЫ: там же есть ссылки на разные сканеры на этой либе... можете проверить сначала как это работает будете приятно удивлены.

Постараюсь проверить в ближайшее время. Учитывая тот факт, что единичным заданием является выполнение head запроса, а затем get в случае, если некоторые данные (время модификации, например) удовлетворяют некоторым критериям, каково количество заданий может обрабатываться в секунду (канал очень широкий =)?

И, чтоб не создавать дополнительную тему, какие существуют библиотеки по типу libwww для перл (классы Request, Response, Cookies, работа с SSL и т.д.)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.