Скриптовые языки (python/ruby/perl), в отличие от компилируемых, практически не используют разделяемые библиотки, это приводит в хранению собственной копии библиотек в каждом процессе интерпретатора скрипта. Такое расточительство ещё больше усугубляется если скрипт в процессе работы простаивает ожидая ответа базы данных или внешнего сервиса. По мере роста приложения и нагрузки на него оказывается что для обработки одного запроса необходимо выделить 200-300 MB памяти на 5-10 секунд, при том, что большую часть этого времени скрипт будет ожидать базу и/или ответа внешнего сервера. Отказываться от скриптов не хотелось из-за скорости разработки, поэтому пришлось искать другое решение. Сменив RoR приложение на Python/Tornado мы сначала съели пуд соли, а потом сократили парк машин, обслуживающих Aviasales.ru, в три раза.
Презентация доклада:
Запись выступления: