посоветуйте настройки

Igor V. Fatkulin ingvar at westsib.ru
Sat Jun 13 10:13:32 MSD 2009


Доброго дня.

Мучаюсь с баннерной системой на FreeBSD6.4 i386.
Используется связка:
1. на одном сервере nginx+apache, под апачем стартует cgi,
выпрашивающее у mysql номер баннера, который надо показать, сами
картинки отдаются nginx напрямую.

2. БД живет на другом сервере и периодически там накапливается куча
запросов в статусе Sending data, такое ощущение, что web-fronend тупо
не забирает данные.

В логах messages веба есть и такие записи:
  kernel: Limiting closed port RST response from 231 to 200 packets/sec
и такие:
  kernel: collecting pv entries -- suggest increasing PMAP_SHPGPERPROC

Посоветуйте плз как оттюнить.

Логи-настройки какие надо предоставлю. Сама система на 99.9999%
занимается отдачей картинок, LA <11 не бывает, а то и под 70
подскакивает. Периодически сайты перестают отвечать вообще, в этот
момент idle=~99% и количество процессов апача равно лимиту. По фтп и
ссх доступно все, пинги идут нормальные. Дисковая система не загружена
вообще никогда.

Переделать с CGI возможности нет, есть возможность только поменять
железо с 2xXEON (old) на новый младший 4хядерник.

###sysctl.conf:
net.inet.tcp.blackhole=1
net.inet.udp.blackhole=1
net.inet.tcp.nolocaltimewait=0
kern.ipc.somaxconn=4096
kern.ipc.maxsockets=204800
kern.maxfiles=204800
net.inet.tcp.recvspace=8192
kern.ipc.nmbclusters=262144

###loader.conf
accf_http_load="YES"
vm.kmem_size=1073741824
vm.kmem_size_max=1073741824
net.inet.tcp.syncache.hashsize=1024
net.inet.tcp.syncache.bucketlimit=100
net.inet.tcp.tcbhashsize=4096

### ядро SMP
+options         KVA_PAGES=512

###nginx.conf
user  nobody;
worker_processes  1;
pid        logs/nginx.pid;

events {
    use    kqueue;
    worker_connections  2048;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log  logs/access.log;
    error_log  logs/error.log;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  0;
    #keepalive_timeout  65;

    gzip  off;
    proxy_buffering on;

    server {
        listen       IP_ADDRESS default accept_filter=httpready;
        server_name  server.name;
        location / {
            proxy_pass    http://server.name:81/; - тут апач
            proxy_set_header  X-Real-IP  $remote_addr;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ /\.ht {
            deny  all;
        }
        location ~* ^.+.(jpg|jpeg|gif|swf|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid
            root   /web/server.name/htdocs;
        }
        location /nginx_status {
            stub_status on;
            access_log   off;
        }
    }

### httpd.conf - апач

KeepAlive Off
MinSpareServers 100
MaxSpareServers 500
MaxClients 512
MaxRequestsPerChild 5
все остальное в общем штатно






More information about the nginx-ru mailing list