Комментарии 25
не понятно, тишина,
текст слишком длинный?
или тема не интересна?
:(
текст слишком длинный?
или тема не интересна?
:(
После прочтения мне на мгновение показалось, что это довольно тонкий сарказм. Я сам довольно хорошо отношусь к Ruby, очень нравится Rails, но Вы, скорее, показали недостатки Ruby, нежели его достоинства. Дав Вам немного синтаксического сахара для решения несложной задачи отправки http-запросов, руби к чертям подвешивал Ваши системы. И то, что в итоге пришлось использовать интерпретор под JVM — не есть хорошо.
Возможно вы невнимательно читали, я повторюсь
Подвешивал Ruby под Windows,
Под OSX и Linux — он вел себя сильно по другому, это раз ;)
«Все говорят» — что для таких задач Ruby не подходить, как вывод — подходит, надо только думать головой. Это два.
Syntax shugar — без этих плюшек, я бы вообще не брался за эту задачу, это был фан, это три
Я не программист — это четыре :)
Подвешивал Ruby под Windows,
Под OSX и Linux — он вел себя сильно по другому, это раз ;)
«Все говорят» — что для таких задач Ruby не подходить, как вывод — подходит, надо только думать головой. Это два.
Syntax shugar — без этих плюшек, я бы вообще не брался за эту задачу, это был фан, это три
Я не программист — это четыре :)
Простите, но то, что Ruby подходит для таких задач я увидел из комментария mgyk, но никак не из Вашего поста. Хотя я очень ценю Вашу инициативу и желание поделиться своим опытом
Понятно, спасибо. Полезно. А Windows был какой версии?
Хабраэффект. Нагрузим сервер по-быстрому :)
хм, похоже я зря столь не внимателен к Ruby
Была похожая проблема — решил на python с помошью библиотеки gevent. Навешал ей сколько нужно задач (суммарно), прицепил задачи к Pool с максимальным количеством одновременных задач в N, в конце каждой задачи sleep на 10 секунд.
И никакого шаманства с jruby и JVM — простой си-экстенш для языка.
И никакого шаманства с jruby и JVM — простой си-экстенш для языка.
Использовали бы асинхронные сокеты, бегало бы огого как шустро. а 2000 потоков на одной системе это слишком сурово.
Можете посмотреть на EventMachine + EM.synchrony + EM::HttpClient
У себя на машине спокойно поднимал 8к клиентов которые слали запрос на мой же локальный сервер, тоже на (EM) получалось около 40к запросов в секунду.
У себя на машине спокойно поднимал 8к клиентов которые слали запрос на мой же локальный сервер, тоже на (EM) получалось около 40к запросов в секунду.
EM.synchrony do client = EventMachine::Synchrony::ConnectionPool.new(size: 2000) do EventMachine::connect('127.0.0.1', 5000, Client) end EventMachine::PeriodicTimer.new(5) do p EM.connection_count end end
А почему не пробовали Ruby 1.9.x? Он же побыстрее 1.8 будет, причем значительно.
Спасибо за отличный опыт, обязательно попробую. Мне как раз нужно сильно нагрузить почтовый сервер, попробую справиться обернув вашим кодом
Моя задача была достаточна специфична, рекомендую глянуть в сторону
http://habrahabr.ru/blogs/programming/113420/#comment_3645505
http://habrahabr.ru/blogs/programming/113420/#comment_3645505
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
KISS + Ruby = нагрузим сервер по быстрому