ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pcre_compile() failed: failed to get memory



On Fri, Apr 25, 2008 at 03:35:11PM +0300, Aleksej Novikov wrote:

> Hello Igor,
> 
> Friday, April 25, 2008, 2:56:53 PM, you wrote:
> 
> > On Fri, Apr 25, 2008 at 02:41:00PM +0300, Aleksej Novikov wrote:
> 
> >> Hello ,
> >> 
> >>   Такая вот ерунда иногда бывает.
> >> 
> >> # /etc/init.d/nginx restart
> >>  * Checking nginx' configuration ...
> >> 2008/04/25 13:24:21 [emerg] 10995#0: malloc() 16384 bytes failed (12: 
> >> Cannot allocate memory)
> >> 2008/04/25 13:24:21 [emerg] 10995#0: pcre_compile() failed: failed to get 
> >> memory in "^.+\.(php)$" at "^.+\.(php)$" in /etc/nginx/nginx.conf:276262
> >> 2008/04/25 13:24:21 [emerg] 10995#0: the configuration file 
> >> /etc/nginx/nginx.conf test failed
> >>  * failed, please correct errors above
> >> 
> >> 
> >>  Конфиг нереально больщой, в нём порядка 30.000 хостов.
> 
> > Как выглядит типичный server ?
>         server {
>         listen xx.xx.xx.xx ;
>         error_page 404  /;
>         server_name www.aa.bb ww.bb;
> 
>         location / {
>         root   /foo/bar;
>         index   index.html index.phtml index.htm index.php4 index.php3 
> index.php index.wml;
>         allow all;
>     }
> 
> 
> и <1% дополнительно
> 
>         location ~* ^.+\.(php)$ {
>         root /foo/bar;
>         rewrite .*  http://aa.bb.cc/php_out.html   break;
>         }
> 
> Bсего 54554 хоста.
> nginx/0.5.26
> 

1) вынести root на уровень server.
2) вынести "error_page  404 /" на уровень http и описать явно там, где
   нужна другая обработка.
3) вынести "index   index.html ..." на уровень http и описать явно там, где
   нужна другая обработка.
4) убрать "allow all".

> > Я иногда думаю как-то уменьшить потребление памяти в конфиге, но тут есть
> > два момента.
> 
> > 1) Уменьшать имеет смысл для встроенных систем, но не исключено, что новый
> > код займёт больше места, чем сэкномленная память на небольшом конфиге.
> 
> > 2) Что касается обычных систем, то не понятно, имеет ли это смысл, если,
> > например, у facebook'а в качестве стандартных серверов (коих порядка 10,000)
> > идут машины с 32G памяти. Я думаю, ещё пару лет и они станут стандартными
> > для всех, как сейчас 2-4G.
> 
> Реальлно добавление RAM тупо решит проблему ?

Что показывает limits ?


-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.