Skocz do zawartości

Web Hosting Talk

  • progreso.pl

    Partner technologiczny

    Upraszczamy to, co inni starają się komplikować. Prosto, pewnie, przyjaźnie - tak robimy hosting!
  • Kei.pl

    Partner technologiczny

    Kei.pl działa na polskim rynku internetowym od 2000 roku. Obecnie na blisko 300 serwerach w Centrum Danych Kei.pl znajduje się kilkadziesiąt tysięcy stron WWW.
  • S-NET.info

    Partner technologiczny

    S-NET to dostawca usług dla biznesu. Najważniejsze usługi świadczone przez firmę to usługi Centrum Danych, dostęp do Internetu, transmisja danych oraz tranzyt do różnych operatorów.
  • Sprint Data Center

    Partner technologiczny

    Sprint Data Center to jedyne w Polsce północno-wschodniej i jednocześnie jedno z najnowocześniejszych w kraju centrum przechowywania i przetwarzania danych.

 

Nginx i duży waiting time


4 odpowiedzi na ten temat

Nginx i duży waiting time

#1 Be4ver

    Często na forum

  • Użytkownicy
  • 70 postów
  • Skąd:Kraków
  • Imię:Janusz
  • Nazwisko:Pyzio

Napisany 08 luty 2012 - 15:46

Witam, od jakiegoś czasu korzystam z Nginx'a, lecz mam problem z dość dużymi (jeśli dobrze interpretuję) czasami oczekiwania. Poniżej zamieszczam statystyki z Munina, a także konfigurację pliku nginx.conf.
Proszę o pomoc w optymalizacji, ew. jakieś wskazówki na co zwrócić uwagę.

Czy zmiana nasłuchiwania po porcie 9018 na socket, może zmniejszyć te waiting time'y?

Dodany obrazek
Dodany obrazek

Nginx.conf
user www-data;
worker_processes 1;
pid /var/run/nginx.pid;
events {
	    worker_connections 600;
	    use epoll;
#	   multi_accept on;
}
http {
	    ##
	    # Basic Settings
	    ##
	    sendfile on;
	    tcp_nopush on;
	    tcp_nodelay on;
	    keepalive_timeout 65;
	    types_hash_max_size 2048;
	    # server_tokens off;
	    # server_names_hash_bucket_size 64;
	    # server_name_in_redirect off;
	    include /etc/nginx/mime.types;
	    default_type application/octet-stream;
	    ##
	    # Logging Settings
	    ##
	    log_format extended '$remote_addr - $remote_user [$time_local]  '
						    '"$request" $status $body_bytes_sent '
						    '"$http_referer" "$http_user_agent"';

	    access_log /var/log/nginx/access.log;
	    error_log /var/log/nginx/error.log;
	    ##
	    # Gzip Settings
	    ##
	    gzip on;
	    gzip_disable "MSIE [1-6]\.";
	    gzip_vary on;
	    gzip_proxied any;
	    gzip_comp_level 6;
	    gzip_buffers 16 8k;
	    gzip_http_version 1.1;
	    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
	    client_max_body_size 64m;
	    ##
	    # Virtual Host Configs
	    ##


server {
  ##Port IPv4 address/port
  listen 80;
  ##Domain with "www"
  server_name www.domena.com;
  ##Rewrite "www" to non "www"
  rewrite ^/(.*) http://domena.com/$1 permanent;
}
server {
  ##Port IPv4 address/port
  listen 80;
  ##Root directory
  root /home/domena_com/public_html;			 
  ##Index file
  index index.php index.html index.htm;
  ##Domain
  server_name domena.com;
  ##Access.log file location
  access_log /var/log/nginx/vhosts/domena_com-access.log extended;
  ##Error.log file location
  error_log /var/log/nginx/vhosts/domena_com-error.log warn;

  ##Directives for favicon.ico file
  location = /favicon.ico {
    expires max;
  #  log_not_found off;
  #  access_log off;
  }
  ##Directives for robots.txt file
  location = /robots.txt {
    allow all;
  #  log_not_found off;
  #  access_log off;
  }
  ##Directives for specified files
  #location ~* \.(js|css|png|jpg|jpeg|gif)$ {
  #  expires 48h;
  #  log_not_found off;
  #}
  ##Ignore apache's configs like .htaccess
  location ~ /\.ht {
    deny all;
    access_log off;
    log_not_found off;
  }
  ##Wordpress rewrite
  rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
  if (!-e $request_filename) {
    rewrite ^.+?(/wp-.*) $1 last;
    rewrite ^.+?(/.*\.php)$ $1 last;
    rewrite ^ /index.php last;
  }
  location / {
    try_files $uri $uri/ /index.php /index.html;
  }
  ##Use PHP for *.php
  location ~ \.php$ {
    include	   fastcgi_params;
    fastcgi_pass  127.0.0.1:9018;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/domena_com/public_html$fastcgi_script_name;
  }
}

I konfiguracja php-fpm:

[domena.com]
listen = 127.0.0.1:9018
listen.allowed_clients = 127.0.0.1
user = pyzio_eu
group = pyzio_eu
pm = dynamic
pm.max_children = 50
pm.start_servers = 3
pm.min_spare_servers = 1
pm.max_spare_servers = 5
chdir = /
;php_admin_value[safe_mode] = 0
php_admin_value[open_basedir] = /home/domena_com/public_html:/usr/share/php5:/tmp
php_admin_value[disable_functions] = dl,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_i

Nginx + PHP-FPM + MySQL + ProFTPD

#2 samu

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 268 postów
  • Firma:ADMIN.NET.PL (MyDevil.net)
  • Imię:Jakub
  • Nazwisko:Szafrański

Napisany 09 luty 2012 - 00:35

Przede wszystkim, unix-socket troche łatwiej zabezpieczać, wprowadzić MAC i pilnować uprawnień.

Nie monitorujesz muninem przypadkiem jakiegoś ociężałego pehapa? Może to wcale nie nginx się wlecze, tylko grzecznie czeka aż PHP skończy się wykonywać ;)
MyDevil.net - niebiańskie konta shell
Do IRC i dla developerów - ponad 40 vhostów, www, python, perl, ruby, java, tcl, lua, C(++), D. Sprawdź sam!

#3 elcct

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 433 postów
  • Skąd:UK

Napisany 09 luty 2012 - 00:44

Z tego z czym ja się spotkałem, to problemem z reguły był niezoptymalizowany skrypt. Zobacz jakie masz opóźnienie na statycznych rzeczach, a jakie na skryptach...

#4 Be4ver

    Często na forum

  • Użytkownicy
  • 70 postów
  • Skąd:Kraków
  • Imię:Janusz
  • Nazwisko:Pyzio

Napisany 11 luty 2012 - 01:10

Zobacz postsamu, o 09 luty 2012 - 00:35, powiedział:

Przede wszystkim, unix-socket troche łatwiej zabezpieczać, wprowadzić MAC i pilnować uprawnień.
Co masz na myśli pisząc MAC? W moim wypadku Nginx i FPM są na jednej maszynie, przy czym FPM nasłuchuje tylko po localhoście. Więc niezbyt widzę tutaj możliwość włamania.

Zobacz postsamu, o 09 luty 2012 - 00:35, powiedział:

Nie monitorujesz muninem przypadkiem jakiegoś ociężałego pehapa? Może to wcale nie nginx się wlecze, tylko grzecznie czeka aż PHP skończy się wykonywać Dodany obrazek
Niestety jeszcze nie, ale myślę jutro zająć się tym.

Zobacz postelcct, o 09 luty 2012 - 00:44, powiedział:

Z tego z czym ja się spotkałem, to problemem z reguły był niezoptymalizowany skrypt. Zobacz jakie masz opóźnienie na statycznych rzeczach, a jakie na skryptach...
j/w - najpierw przygotuję sobie plugin do Munina.
Nginx + PHP-FPM + MySQL + ProFTPD

#5 samu

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 268 postów
  • Firma:ADMIN.NET.PL (MyDevil.net)
  • Imię:Jakub
  • Nazwisko:Szafrański

Napisany 11 luty 2012 - 08:44

Zobacz postBe4ver, o 11 luty 2012 - 01:10, powiedział:

Co masz na myśli pisząc MAC? W moim wypadku Nginx i FPM są na jednej maszynie, przy czym FPM nasłuchuje tylko po localhoście. Więc niezbyt widzę tutaj możliwość włamania.

Pilnujesz, żeby tylko użytkownik 'www', z którego działa nginx mógł łączyć się do, powiedzmy, 127.0.0.1:9000, a użytkownicy z których działa PHP nie? Przy unix-socket możesz to ładnie rozgraniczyć korzystając z ugidfw (freebsd), rbac (linux) lub choćby zwykłem chmodem i chownem.

Ten post był edytowany przez samu dnia: 11 luty 2012 - 08:44

MyDevil.net - niebiańskie konta shell
Do IRC i dla developerów - ponad 40 vhostów, www, python, perl, ruby, java, tcl, lua, C(++), D. Sprawdź sam!





1 Użytkowników czyta ten temat

0 użytkowników, 1 gości, 0 anonimowych użytkowników