Welcome! Log In Create A New Profile

Advanced

Re: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Михаил Монашёв
December 22, 2009 06:12PM
Здравствуйте, Владимир.

VG> После чтения N-го количества мануалов, статей и пр. по тюнингу
VG> FreeBSD для WEB все еще остались некоторые сомнения из-за
VG> противоречий в вышеописанной мат. части.

VG> В связи с сим, уважаемая публика, имеется просьба.

VG> У кого FreeBSD amd64 под L5420 разшарьте свои
VG> /boot/loader.conf, /etc/sysctl.conf, kldstat (output)

VG> Еще если не затруднит:
VG> cat
VG> /usr/src/sys/amd64/conf/MYSUPERPERFORMANCEKERNELFORNGINXWEBSERVER
VG> :)
VG> cat /usr/local/etc/nginx/nginx.conf

Критика приветствуется :-)

Планирую перейти на GENERIC во FreeBSD 8.0 и потому многое перекочует
оттуда в /boot/loader.conf, например ipfw, акцепт-фильтры, geom, lagg,
vlan .

/boot/loader.conf:
aio_load="YES"

net.inet.tcp.syncache.hashsize="1024"
net.inet.tcp.syncache.bucketlimit="100"
net.inet.tcp.tcbhashsize="4096"

vm.kmem_size="1G"
kern.ipc.nmbclusters="262144"

net.inet.tcp.hostcache.hashsize="16384"
net.inet.tcp.hostcache.bucketlimit="100"

hw.em.rxd="4096"
hw.em.txd="4096"
hw.em.rx_process_limit="-1"

vm.pmap.pg_ps_enabled="1"



/etc/sysctl.conf
# нужно для jumbo frames . смотреть можно через netstat -m : 18192/1733/19925/65536 4k (page size) jumbo clusters in use (current/cache/total/max)
kern.ipc.nmbjumbop=131072

# увеличиваем, чтобы больше мелких файлов влезло в кэш файловой системы
kern.maxvnodes=2000000

# нужно было для варниша
#kern.threads.max_threads_per_proc=100000

net.inet.ip.intr_queue_maxlen=4096

net.inet.tcp.msl=30000
net.inet.tcp.delayed_ack=0

net.inet.ip.random_id=1

net.inet.ip.fw.dyn_buckets=65536
net.inet.ip.fw.dyn_max=65536
net.inet.ip.fw.dyn_ack_lifetime=120
net.inet.ip.fw.dyn_syn_lifetime=10
net.inet.ip.fw.dyn_fin_lifetime=2
net.inet.ip.fw.dyn_short_lifetime=10

net.inet.tcp.keepidle=40000
net.inet.tcp.keepintvl=40000
net.inet.tcp.keepinit=40000

net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

# увеличивает количество tcptw для хранения TAIM_WAIT сокетов
net.inet.tcp.maxtcptw=40960

# порты для исходящих соединений начинаются с номера 16384, вместо 49152. Также надо firewall подправить, чтобы он этот интервал портов учитывал
net.inet.ip.portrange.first=1024

# выдавать порты для исходящих соединений последовательно
net.inet.ip.portrange.randomized=0

# не переводить в состояние TAIM_WAIT соединения на локальном сервере
# содержит баги и поэтомц выключено
# net.inet.tcp.nolocaltimewait=1

# разрешаем переключение с syncache на syncookies, если syncache переполнен
net.inet.tcp.syncookies=1

# увеличивает лимиты в vmstat -z для socket, inpcb и tcpcb. можно задрать до 204800, тогда будет сложнее задосить
kern.ipc.maxsockets=204800

# сложнее задосить. kern.maxfiles задрать, а kern.maxfilesperproc не задирать, если реально не требуется.
kern.maxfiles=204800
kern.maxfilesperproc=200000

# нужно чтобы соединения не сбрасывались, если апачи будут тормозить
kern.ipc.somaxconn=4096

# нужно чтобы не падали сообщения вроде: kernel: Limiting open port RST response from 596 to 200 packets/sec
net.inet.icmp.icmplim=2000

debug.minidump=1




/usr/local/etc/nginx/nginx.conf
# на небольшом числе воркеров не включать
#timer_resolution 100ms;

#user nobody;
#worker_processes 1000;
worker_processes 30;

error_log /opt/log/nginx/error.log;
#error_log /opt/log/nginx/error.log debug;

pid /var/run/nginx.pid;

events {
use kqueue;
worker_connections 2048;
}


http {

log_format main '$time_local $status "$upstream_status" "$upstream_response_time" "$upstream_addr" $remote_addr $bytes_sent $host "$request" "$http_referer" "$http_user_agent"';

#log_format webdav '$host $request';
#access_log /opt/log/nginx/access.log webdav buffer=256k;
#access_log /opt/log/nginx/access.log main buffer=256k;
#access_log /opt/log/nginx/access.log main;
#access_log /opt/log/nginx/access.log cache buffer=256k;
access_log off;

log_not_found off;

sendfile on;
tcp_nopush on;
aio sendfile;
tcp_nodelay on;
send_lowat 12000;

ignore_invalid_headers on;
server_names_hash_bucket_size 64;

client_body_temp_path /var/tmp/nginx/client_body_temp_path;

client_max_body_size 10m;
client_body_buffer_size 128k;

client_header_timeout 3m;
client_header_buffer_size 2k;
client_body_timeout 3m;
send_timeout 3m;
postpone_output 1460;
keepalive_timeout 75 60;

reset_timedout_connection on;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_redirect off;

proxy_buffers 128 128k;

proxy_temp_path /var/tmp/nginx/proxy_temp_path;

proxy_cache_path /optcache1/cache levels=1:2 keys_zone=optcache1:200m inactive=30d max_size=200G;
proxy_cache_path /optcache2/cache levels=1:2 keys_zone=optcache2:200m inactive=30d max_size=200G;
proxy_cache_path /optcache3/cache levels=1:2 keys_zone=optcache3:200m inactive=30d max_size=200G;
proxy_cache_key $host$uri;
proxy_cache_valid 200 30d;
proxy_cache_valid 301 302 404 1s;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504 http_404;

# set_real_ip_from 10.0.0.0/8;
# real_ip_header X-Real-IP;

types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/x-javascript js;
text/plain txt;
image/png png;
image/x-icon ico;
application/x-shockwave-flash swf;
audio/mpeg mp3;
application/x-gzip gz;
}

server {
listen 83.222.4.74:80 default accept_filter=httpready rcvbuf=4096 sndbuf=131072;
server_name for.trash.ru;

location / {
return 204;
}

location = /nginx_status {
stub_status on;
}
}
server {
....
}
}

--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster@softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.


_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Vladimir Getmanshchuk December 22, 2009 02:02PM

Re: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Михаил Монашёв December 22, 2009 06:12PM

Re: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Anton Yuzhaninov December 23, 2009 05:24AM

Re: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Alex Vorona December 23, 2009 07:02AM

Re[2]: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Михаил Монашёв December 27, 2009 06:06AM

Re: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Andrew Polyakov December 24, 2009 05:06AM

Re[2]: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Михаил Монашёв December 24, 2009 05:46AM

Re: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

squirl December 24, 2009 05:22AM

Re[2]: Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Михаил Монашёв December 24, 2009 05:44AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 118
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready