Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: огромный iowait :(
В сообщении от 29 декабря 2006 04:26 Adlan Elm. написал(a):
> Доброго времени суток.
>
> У меня крутится nginx 0.5.4 с апачем 2.0.55 на порту 8080 конфиг ниже.
> Конфиг для каждого виртуального хоста генерится автоматом через чуть
> переделанный ispconfig. Виртуальных хостов штук 7.
>
> Железо AMD Opteron(tm) Processor 144, 1ГБ, 80ГБ SATA HDD (/dev/sda:
> ATA ST3808110AS 3.AA) , ОСь - ubuntu 6.06 amd64
>
> На сервер часто выкладывают большие файлы, например те же фильмы по
> 700мб и
> при отдаче таких файлов iowait возрастает напомерно, кроме вот этого
> больше никаких нареканий нет. причем размер буфферов в top показывает
> меньше 1 мега. гуглил нескока дней и ни разу не видел
> чтоб у кого-то была такая же проблема, что я аж такую очевидную ошибку
> сделал ? 58% wa это ну ни в какие ворота ...
>
> Cpu(s): 11.5% us, 44.2% sy, 0.0% ni, 0.0% id, 58.5% wa, 1.9% hi,
> 3.8% si
> Mem: 995380k total, 987308k used, 8072k free, 864k buffers
> Swap: 1020116k total, 152k used, 1019964k free, 196544k cached
>
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
> COMMAND
> 1787 www-data 18 0 17376 5356 764 R 1.2 0.5 0:26.99
> nginx
> 1786 www-data 18 0 26988 14m 768 D 3.9 1.5 0:06.57
> nginx
> 1785 www-data 18 0 19516 7540 768 R 2.0 0.8 0:13.57
> nginx
> 3402 www-data 15 0 181m 39m 1668 D 2.0 4.0 0:00.01
> apache2
>
>
>
> nginx начиная с 0.4.. версии постоянно собирал вот так:
>
> ./configure > --prefix=/usr > --sbin-path=/usr/sbin > --conf-path=/etc/nginx/nginx.conf > --error-log-path=/var/log/nginx/error.log > --http-log-path=/var/log/nginx/access.log \<
> --http-client-body-temp-path=/var/spool/nginx/client_body_temp > --http-proxy-temp-path=/var/spool/nginx/proxy_temp > --http-fastcgi-temp-path=/var/spool/nginx/fastcgi_temp > --pid-path=/var/run/nginx.pid > --user=www-data > --group=www-data > --with-rtsig_module > --with-select_module > --with-poll_module > --with-http_ssl_module > --with-http_realip_module > --with-http_addition_module > --with-imap > --with-openssl=/usr/lib > --with-md5=/usr/lib > --with-sha1=/usr/lib
> ___________________________________________________________
> вот конфиг с одним виртуальным хостом. Все остальные виртуальные хосты
> идут с такой же конфигурацией, но с пустой custom directives секцией
> __________________________________________________________
> user www-data www-data;
> worker_processes 3;
> pid /var/run/nginx.pid;
> error_log /var/log/nginx.error_log debug;
> events {
> worker_connections 1024;
> use epoll;
> }
> http {
> include /etc/nginx/mime.types;
> default_type application/octet-stream;
> log_format combined_log '$server_name||||$bytes_sent||||$remote_addr
> - - [$time_local] "$request" $status $bytes_sent "$http_referer"
> "$http_user_agent"';
> access_log /var/log/httpd/ispconfig_access_log combined_log;
>
> server{
> listen 80;
> server_name xxx.xxxx.org xxxx.org ;
> error_log /home/user/log/nginx_error.log.nginx info
> override_charset off;
>
> location / {
> proxy_pass http://xx.xx.xx.xx:8080/;
> proxy_buffering on;
> proxy_redirect default;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> client_max_body_size 32m;
> client_body_buffer_size 256k;
> proxy_connect_timeout 90;
> proxy_send_timeout 90;
> proxy_read_timeout 90;
> proxy_buffer_size 1k; #IPboard местами тормозит если
> больше
> proxy_buffers 4 32k;
> proxy_busy_buffers_size 64k;
> proxy_temp_file_write_size 64k;
> index index.html index.htm index.php index.php5 index.php4
> index.php3 index.shtml index.cgi index.pl index.jsp Default.htm
> default.htm;
> }
> error_page 400 /home/user/web/error/invalidSyntax.html;
> error_page 401 /home/user/web/error/authorizationRequired.html;
> error_page 403 /home/user/web/error/forbidden.html;
> error_page 404 /home/user/web/error/fileNotFound.html;
> error_page 405 /home/user/web/error/methodNotAllowed.html;
> error_page 500 /home/user/web/error/internalServerError.html;
> error_page 503 /home/user/web/error/overloaded.html;
>
> location ~*
> ^.+\.(jpg|jpeg|gif|png|ico|js|rar|zip|7z|avi|mpg|mpeg|mov|bz2|mp3|wmv|iso)$
> {
> root /home/user/web;
> }
> location /icon {
> root /home/awstats/wwwroot/icon/;
> }
>
> ##virtual host custom directives
> location ~* ^.+.(rar|zip|7z|avi|mpg|mpeg|mov|bz2|mp3|wmv|iso)$ {
> valid_referers none server_names;
> if ($invalid_referer){
> rewrite ^/ http://xxx.xxxx.org permanent;
> }
> root /home/user/web;
> }
>
> if ($host !~* ^xxx.xxxx.org){
> rewrite ^(.*)$ http://xxx.xxxx.org$1 permanent;
> }
> }
> ##end of custom directives
>
> }
Поставьте
worker_processes 1;
и
worker_connections 512;
Для того, чтобы уменьшить iowait нужно сериализовать обращения к диску от
nginx, для этого нужно запускать по одному worker'у на каждое физическое
устройство хранения.
--
With best wishes
Denis O.Philippov, denis@xxxxxxxx
|