Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: медленная отдача по сети во внешний мир
В сообщении от Monday 25 May 2009 17:45:22 Sergey Averyanov написал(а):
и еще одно наблюдение: из внешнего мира при тестовой закачке рандомного
файлика по scp без компрессии достигается скорость 3MB/s
с учетом того, что скорость отдачи по http не сильно выше 1MS/s, можно
предположить, что пропускной способности сети вроде как хватает и дело именно
в каких-то настройках.
с благодарностью приму совет -- картина больно уж непонятная
> Есть FreeBSD 7.2-STABLE + nginx/0.6.36
> С некоторого момента времени заметно следующее: отдача данных по сети во
> внешний мир идет на порядок медленнее, чем ожидается.
> По сети вовне (по замеркам apache benchmark) закешированная мемекешем
> главная отдается со скоростью 3-4 запроса в секунду, тот же тест с
> локалхоста дает около 2000 запросов в секунду.
> Все это крутится на машине Intel(R) Core(TM)2 Quad CPU,
> real memory = 3479166976 (3317 MB)
>
> Нутром чую, дело в недотюненности сети.
> Причем судя по сравнительному результату локальных и удаленных тестов
> недотюненность какая то глобальная, а не косметическая.
> Чт можно попробовать подкрутить?
>
> Дополнительная информация ниже:
> 0) Конфиг такой:
> workr_processes 4;
>
> events {
> worker_connections 4096;
> use kqueue;
> }
>
>
> http {
> include mime.types;
> default_type application/octet-stream;
> sendfile on;
> keepalive_timeout 65;
> gzip on;
> gzip_min_length 0;
> gzip_proxied any;
> gzip_types text/html text/plain text/css application/x-javascript
> application/xml;
> client_max_body_size 25m;
>
> server {
> listen x.x.x.x:80;
> server_name www.foo.ru;
>
> location / {
> set $memcached_key "$uri?$args";
> memcached_pass 127.0.0.1:11211;
> default_type text/html;
> log_format mc '[$time_local] $remote_addr "$http_referer"
> "$http_user_agent" -- $memcached_key';
> access_log /var/log/nginx/foo.ru/www/mc.log mc;
> error_page 404 405 502 504 = @fallback;
> }
> location @fallback {
> proxy_pass http://127.0.0.1:80;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header Host $host;
> proxy_set_header MCKEY "$uri?$args";
> }
> #дальше идет набор правил для отдачи статики
> #вроде такого
> location ~ ^/preview/ {
> root /media/foo.ru;
> access_log /var/log/nginx/foo.ru/www/images.log;
> }
> }
> }
>
>
> Чем можно объяснить такую странность?
>
>
> PS
> некоторые наблюдения:
>
> 1) В топе ничего подозрительного нет:
> last pid: 74125; load averages: 0.02, 0.12, 0.14
> 76 processes: 2 running, 74 sleeping
> CPU: 2.1% user, 0.0% nice, 1.0% system, 0.1% interrupt, 96.9% idle
> Mem: 270M Active, 2576M Inact, 244M Wired, 84M Cache, 112M Buf, 72M Free
> Swap: 4096M Total, 4096M Free
>
> 2) Воркеры nginx и memcached находятся в состоянии kqread
>
> 3)
> # netstat -an -p tcp | wc -l
> 4551
> # netstat -an -p tcp | grep ESTA | wc -l
> 2318
> # netstat -an -p tcp | grep WAIT | wc -l
> 2126
>
> 4) #netstat -m
> 440/3595/4035 mbufs in use (current/cache/total)
> 292/1842/2134/25600 mbuf clusters in use (current/cache/total/max)
> 292/604 mbuf+clusters out of packet secondary zone in use (current/cache)
> 58/682/740/12800 4k (page size) jumbo clusters in use
> (current/cache/total/max)
> 0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
> 0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
> 926K/7310K/8236K bytes allocated to network (current/cache/total)
> 0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
> 0/0/0 requests for jumbo clusters denied (4k/9k/16k)
> 45/223/6656 sfbufs in use (current/peak/max)
> 0 requests for sfbufs denied
> 0 requests for sfbufs delayed
> 130474 requests for I/O initiated by sendfile
> 0 calls to protocol drain routines
>
> 5) # sysctl kern.ipc.maxsockets
> kern.ipc.maxsockets: 25600
>
> 6) # vmstat -z | egrep 'tcp|ITEM'
> ITEM SIZE LIMIT USED FREE REQUESTS
> FAILURES
> tcpcb: 464, 25600, 3857, 2223, 12571044,
> 0
> tcptw: 52, 5184, 795, 4389, 4803580,
> 51335
> tcpreass: 20, 1690, 0, 676, 23233,
> 0
>
> 7) # sysctl -a | grep kern.maxfile
> kern.maxfiles: 20000
> kern.maxfilesperproc: 20000
>
> 8) # sysctl net.inet.tcp.nolocaltimewait
> net.inet.tcp.nolocaltimewait: 1
>
> 9) Судя по systat -if наружу идет раздача примерно 1-1.2 MB/s
--
С уважением,
Сергей Аверьянов
|