Производительный ftpd на python 2.6

9 views
Skip to first unread message

Black_Noir

unread,
Jan 7, 2010, 6:18:56 AM1/7/10
to Пишем на Python лучше
Имеется ftp сервер с ~2000 активных пользователей, в течении последних
нескольких месяцев сменили уже пару форковых ftp демонов
(proftpd,bftpd,vsftpd) - каждый из которых в районе 1000-1500 форков
дает очень большую нагрузку (load average: 150-200).

Было принято решение написать тредовый демон на асинхронных сокетах.

Собственно вопрос в том стоит ли его писать на python 2.6 + epoll
(возможно twisted), либо это не даст прироста в производительности и
писать нужно на c/c++ ?

Sergey Schetinin

unread,
Jan 7, 2010, 6:38:58 AM1/7/10
to Пишем на Python лучше
Понятно что наверняка сказать трудно, но если нагрузку дает именно
оверхед на переключение процессов, то асинхронный сервер это может
решить. Какого порядка получается throughtput у сервера? То есть я бы
начинал с исследования что же именно дает нагрузку.

Из реализаций на питоне в twisted есть, но чтобы предоставить ему все
как надо может понадобиться попотеть. Есть еще pyftpdlib, с ней я
работал чуть больше и реализация там довольно таки полная, но два
минуса: основано на asyncore который накладывает отпечаток, и огромное
количество копи-пейста в коде библиотеки.

Питон однозначно "сьест" часть прироста скорости которую даст
асинхронность, но поскольку там сплошной IO, то врядли всё. С
уверенностью сказать не могу.

Ну и конечно удивительно что нет готовых асинхронных FTP на c/cpp. Или
хотя бы потоковых -- всё ж таки меньше цена переключения.

Black_Noir

unread,
Jan 8, 2010, 8:23:51 AM1/8/10
to Пишем на Python лучше
Throughtput порядка 250-350мбит, при прямом копировании по nfs между
серверами в одном коммутаторе может подняться до 500-600.

Параллельно **ftpd файлы отдаёт nginx, соответственно когда оставляем
включенным только его loadaverage уменьшается до 4-5 при той же отдаче
(250-350мбит).

Спасибо за советы, будем писать на питоне.

Sergey Schetinin

unread,
Jan 8, 2010, 10:42:36 AM1/8/10
to better-python-ru
Было бы интересно услышать какой выйдет результат. Если будет
возможность, пожалуйста напишите когда будут какие-то данные.

2010/1/8 Black_Noir <gblac...@gmail.com>:

> --
> Группа: http://groups.google.com/group/better-python-ru
> Отписка: better-python-...@googlegroups.com
>

--
Best Regards,
Sergey Schetinin

http://s3bk.com/ -- S3 Backup
http://word-to-html.com/ -- Word to HTML Converter

Sergey Schetinin

unread,
Jan 18, 2010, 5:39:01 AM1/18/10
to Пишем на Python лучше
Ссылка в тему: http://www.codexon.com/posts/debunking-the-erlang-and-haskell-hype-for-servers

К удивлению автора (и моему тоже) асинхронный сервер на Питоне
оказался быстрее аналогичных на Erlang и Haskell.
Также упомянут Erlang в режиме SMP итп.


On Jan 8, 5:42 pm, Sergey Schetinin <mal...@gmail.com> wrote:
> Было бы интересно услышать какой выйдет результат. Если будет
> возможность, пожалуйста напишите когда будут какие-то данные.
>

> 2010/1/8 Black_Noir <gblackn...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages