Память на буферы заполучить
Igor Sysoev
is at rambler-co.ru
Mon Feb 20 15:06:25 MSK 2006
On Mon, 20 Feb 2006, Anton Maksimenkov wrote:
> Посматривая на некоторые письма вижу, что у народа nginx хватает по
> 150-250 Мб на себя. У меня же на относительно большом кол-ве запросов
> он еле до 14-15 Мб дотягивает. То есть примерно такая картина:
>
> # ps ax -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'|grep -v 'grep'
> PID PPID USER %CPU VSZ WCHAN COMMAND
> 22548 1 root 0.0 704 pause nginx: master process /usr/local/sbin/nginx
> 8219 22548 www 0.0 14736 kqread nginx: worker process (nginx)
> 31271 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> 16397 22548 www 0.0 14820 kqread nginx: worker process (nginx)
> 12312 22548 www 0.0 14272 biowai nginx: worker process (nginx)
> 12020 22548 www 0.0 14332 kqread nginx: worker process (nginx)
> 28181 22548 www 0.1 14684 biowai nginx: worker process (nginx)
> 15242 22548 www 0.0 14272 biowai nginx: worker process (nginx)
> 30943 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> 13155 22548 www 0.0 14592 kqread nginx: worker process (nginx)
> 28186 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> 4986 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> 20236 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> 2803 22548 www 0.0 14312 getblk nginx: worker process (nginx)
> 29713 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> 26670 22548 www 0.0 14464 - nginx: worker process (nginx)
> 20421 22548 www 0.0 14272 kqread nginx: worker process (nginx)
> ...
>
> Это при том, что на выдаче трафика как я уже указывал наблюдаются
> некоторые "подтормаживания" (в сравнении с апачем). Хотя в точности
> теперь уже не могу сказать, столько раз менял их, что уже потерялся...
>
> Однако, мне думается, что 14Мб это сильно мало для трафика порядка
> 8-10 Мбит/с, есть надежда, что если бы хорошенько использовать буферы,
> то "подтормаживаний" наверное можно было бы избежать. Конфиг выглядит
> примерно так:
>
> user www www;
> worker_processes 32;
> events {
> worker_connections 64000;
> }
>
> http {
> tcp_nodelay on;
> output_buffers 131072 8k; # <-
> postpone_output 40; # <- это я уже как только не менял
>
> userid on;
> userid_name Apache;
>
> server_names_hash_max_size 2048;
> server_names_hash_bucket_size 256;
>
> server {
> listen X.X.X.X:80 default backlog=2048;
> server_name www.domen.ru *.domen.ru;
> proxy_buffers 16384 128k;
> set $host_part "";
>
> location ~* \.(gif|jpe?g|png)$ {
> if ($http_host ~* ^(.+)\.domen\.ru.*$) {
> set $rootdir /var/www/domen.ru/$1/;
> }
> root $rootdir;
> }
>
> location / {
> if ($http_host ~* "^(.+)\.domen\.ru.*$") {
> set $host_part $1;
> }
> rewrite ^(.*)$ /$host_part/$1 break;
> proxy_pass http://127.0.1.6;
> }
> access_log /var/www/logs/access.log accounting buffer=32k;
> }
> и ещё пара таких server {}
> ...
>
> И ведь не ест он даже близко 131072 * 8 Kб. Картинки читает напрямую
> с диска; теперь нету такого, чтобы в biowai все процессы сидели, обмен
> с диском примерно 2-3 Кб/с. Вроде бы тут самое место все запрошенные
> картинки в буфер в память хапнуть, и потом постепенно знай сливай их
> клиенту...
worker_processes 4;
http {
output_buffers 4 32k;
postpone_output 1460;
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list