что влияет на размер памяти занимаемой worker процессом?
Maxim Dounin
mdounin at mdounin.ru
Thu Oct 15 12:53:50 MSD 2009
Hello!
On Thu, Oct 15, 2009 at 12:32:26PM +0400, Maxim Dounin wrote:
> Hello!
>
> On Thu, Oct 15, 2009 at 11:51:54AM +0400, Igor Sysoev wrote:
>
> > On Thu, Oct 15, 2009 at 11:34:46AM +0400, Maxim Dounin wrote:
> >
> > > Hello!
> > >
> > > On Thu, Oct 15, 2009 at 09:57:04AM +0400, Vasiliy G Tolstov wrote:
> > >
> > > > В Срд, 14/10/2009 в 18:11 +0300, Alexey пишет:
> > > > > On Wed, 14 Oct 2009 14:12:51 +0400, Vasiliy G Tolstov <v.tolstov at selfip.ru>
> > > > > wrote:
> > > > > > то есть worker процесс занимает 20 мегабайт
> > > > > > памяти. На что влияет размер
> > > > > > занимаеомй памяти?
> > > > >
> > > > > как минимум worker_connections
> > > > >
> > > >
> > > > worker_processes 2;
> > > > pid /var/run/nginx.pid;
> > > > events {
> > > > worker_connections 100000;
> > > > use epoll;
> > > > }
> > > >
> > > >
> > > > А есть где-то информация, сколько памяти требуется для одного
> > > > worker_connection ?
> > >
> > > Основное, что ест память - это *буфера*, выделяемые на каждое
> > > активное соединение. Смотреть внимательно на размеры
> > >
> > > output_buffers
> > > proxy_buffers/fastcgi_buffers
> > > gzip_buffers
> > > client_*_buffer*
> > >
> > > и т.п., складывать, умножать на worker_connections. Результатом
> > > будет теоретический максимум занимаемой воркером памяти.
> >
> > Сейчас worker_connections выделяются при старте, поэтому 100000 соединений
> > будут весьма заметны.
>
> sizeof(struct ngx_connection_t) == 100, т.е. 100000 это 10 мегабайт.
А, там ещё 2 * sizeof(ngx_event_t), т.е. ещё где-то + 100 байт на
соединение под i386. Как раз и получается 20 мегабайт без
нагрузки.
Maxim Dounin
> Хотел было сказать что это копейки, но перечитал исходный вопрос - он
> был про 20 мегабайт... :)
>
> Каково же будет удивление топикстартера когда во все эти
> соединения ещё и клиенты придут? :)
>
> Maxim Dounin
More information about the nginx-ru
mailing list