too high cpu load

Igor Sysoev is at rambler-co.ru
Mon Nov 7 22:21:41 MSK 2005


On Mon, 7 Nov 2005, Alexander Burnos wrote:

> Есть nginx 0.3.7, который проксирует запросы к бэкенду.
> Все это живет на debian 2.6.11.9 ядре, P-IV 3.0 HT
>
> Собрано с:
> --with-http_ssl_module
> --without-http_charset_module
> --without-http_ssi_module
> --without-http_autoindex_module
> --without-http_geo_module
> --without-http_fastcgi_module
> --without-http_userid_module
> --with-http_stub_status_module
> --with-rtsig_module
>
> При этом он почему-то отжирает непозволительно много процессора.
> top выглядит так:
>
>  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 25894 httpd     16   0  7084 5352 1592 S 31.0  0.3   0:11.35 nginx
> 14085 server1   17   0  550m 299m  16m S 25.2 14.8 609:20.18 backend
> 25895 httpd     15   0  6404 4740 1592 R 19.4  0.2   0:10.62 nginx
> 23738 httpd     16   0  394m  15m 3072 S  5.8  0.8   0:23.35 httpd
> 14987 server1   17   0  572m 214m  19m S  3.9 10.6  58:42.15 backend
> 23422 httpd     16   0  394m  16m 3072 S  1.9  0.8   0:25.95 httpd
> 26040 root      15   0  2260 1036  736 R  1.9  0.0   0:00.02 top
>
> status:
>
> Active connections: 66
> server accepts handled requests
> 324586 324586 324568
> Reading: 63 Writing: 2 Waiting: 1
>
> И это не самый пик нагрузки nginx.
>
> Конфиг таков:
>
> user  httpd httpd;
> worker_processes  5;
>
> #error_log  logs/error.log;
> #pid        logs/nginx.pid;
>
>
> events {
>    connections  1024;
>    use epoll;
> }
>
>
> http {
>    include       conf/mime.types;
>    default_type  application/octet-stream;
>
>    #sendfile        on;
>    #tcp_nodelay    on;
>
>    keepalive_timeout  0;
>
>    #gzip  on;
>
>    server {
>        listen           1.1.1.1:443;
>        server_name      servername.com
>        ssl              on;
>        ssl_certificate /path/to/cert
>        ssl_certificate_key /path/to/cert_key
>
>        #charset koi8-r;
>
>        access_log  off;
>
>        rewrite ^/w3c(.*) /image/w3c$1  last;
>
>
>        location / {
>            root   html;
>            index  index.html index.htm;
>        }
>
>        location /status {
>         stub_status on;
>         allow my.ip.address;
>         deny all;
>        }
>
>        location  /image/ {
>         proxy_set_header  X-Forwarded-Host 'myhost.com';
>         proxy_set_header  X-Forwarded-For        $remote_addr;
>         proxy_pass   http://backend.ip:port/;
>        }
>
>        # deny access to .htaccess files
>        location ~ /\.ht {
>            deny  all;
>        }
>    }
> }
>
> Пробовал использовать rtsig, в этом случае master процесс берет около
> 11% cpu, но переодически "выстреливает" в top занимая 80-90%.

А idle на машине есть ?

> Кто может подсказать, почему так? И в какую сторону смотреть?
> С apache подобных фокусов не было.

А что из себя представляют /images/ ?

И пара советов (хотя они, конечно, не уменьшат существенно занятость
процессора):

1) при использовании SSL лучше разрешать keep-alive:
     keepalive_timeout  75;

2) "rewrite ^/w3c(.*) /image/w3c$1  last;" лучше записать так:

    location /w3c {
        rewrite ^(.*)$  /image$1  last;
    }


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





More information about the nginx-ru mailing list