Re: запуск cgi бинарника c параметрами через web
Peter Leonov
gojpeg на gmail.com
Вс Ноя 29 17:34:19 MSK 2009
On 29.11.2009, at 14:13, Igor Sysoev <igor на sysoev.ru> wrote:
> On Sun, Nov 29, 2009 at 10:56:48AM +0300, actionmanager на gmail.com
> wrote:
>
>>>> как можно с помощью nginx запустить этот бин
>>>> арник c
>>>> параметрами через веб и получить результат ?
>>
>>> Используйте http://www.acme.com/software/mini_httpd/
>>
>> в моей ситуации будет лучше запускать бинарник через php скри
>> пт с
>> помощью exec, так будет экономнее по ресурсам. команду надо выпол
>> нять
>> до 10 раз в день, она просчитывает данные и тут же выдаёт результат.
>>
>> почему в nginx до сих пор нет поддержки выполнения cgi бинарников
>> или
>> это никому не нужно ? :)
>
> Потому что выполнять cgi форканьем текущего воркера, который в данный
> момент обслуживает тысячи соединений - эта бессмысленная трата ресур
> сов.
> Нужно делать специальный менеджер cgi-процессов, в который проксиров
> ать
> запросы, что, по сути, мало чем отличается от проксирования mini_htt
> pd.
> Если собрать mini_httpd с NO_OPENSSL=YES, он будет занимать в памяти
> что-то около мегабайта (в основном разделяемая libc):
>
> ps ax -o pid,ppid,%cpu,vsz,rss,wchan,command|egrep '(mini_httpd|PID)'
> PID PPID %CPU VSZ RSS WCHAN COMMAND
> 40017 40016 0.0 5864 1308 select /usr/local/sbin/mini_httpd -D -
> C /usr/local
> 40016 1 0.0 7068 1672 wait /bin/sh /usr/local/sbin/
> mini_httpd_wrapper
>
> mini_httpd_wrapper, возможно, можно убрать. У меня Mailman проксируе
> тся
> в mini_httpd, запущенный с таким конфигом:
>
> user=www
> host=127.0.0.1
> port=80
> dir=/usr/local/mailman
> cgipat=cgi-bin/*
> pidfile=/var/run/mini_httpd.pid
> xrealip=127.0.0.1
>
> xrealip появляется в прилагаемом патче.
> --
> Игорь Сысоев
> http://sysoev.ru
Как раз хотел в девеле поговорить об этом.
Мы все иногда грешим сиджиаем, и каждый использует что-то свое:
apache, mini_httpd, или даже spawnfcgi+fcgiwrap. Первые два дублируют
логику обработки HTTP. Третий же добавляет целый новый протокол. А
главное все эти погремушки добавляют своих особенностей и глюков.
Интересно то, что вместо этих товарищей будет удобно запускать еще
один энжинкс, но с модулем для запуска CGI-программ. Можно
использовать один и тот же бинарник энжинкса, но с разными конфигами.
Тут важным мне кажется то, что всеми делами занят наш любимый и
надежный друг, а не кто-то там еще. Даже не представляю свою работу
без энжи. Спасибо вам, Игорь :)
С уважением,
Петр.
P.S. И патчить ничего не придется ;)
Подробная информация о списке рассылки nginx-ru