Есть 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