elroy 6 Zgłoś post Napisano Kwiecień 15, 2011 (edytowany) Witajcie Staram się od dwóch dni zmienić apache i wybór padł na nginx+php5-cgi+spawncgi Pierwsza próba niestety dowiodła, że coś skopałem. Strony strasznie wolno się otwierają a w logach sypie błędami Spawncgi odpalam tak: /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www-data -g www-data -f "/usr/bin/php5-cgi -c /etc/php5/cgi/php.ini" config nginxa user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include /etc/nginx/mime.types; server_tokens off; access_log<>/var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } config vhosta server { listen 80; ## listen for ipv4 server_name site.pl www.site.pl; access_log /var/log/nginx/site.pl.access.log; error_log /var/log/nginx/site.pl.error.log; root /home/www/site.pl; index index.html index.php; location / { if (!-e $request_filename) { rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;} } #location ~ /\. { access_log off; log_not_found off; deny all; } location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/tomek/www/wiki_piwo_org$fastcgi_script_name; } } fastcgi_params fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; fastcgi_param REDIRECT_STATUS 200; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; w logach (powycinałem co nie ważne) 2011/04/15 16:43:36 [error] 3748#0: *146 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 184.xxxx: site.pl, request: "GET /index.php", upstream: "fastcgi://127.0.0.1:9000", 2011/04/15 16:43:36 [error] 3748#0: *154 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.66.154, server: upstream: "fastcgi://127.0.0.1:9000", 2011/04/15 16:47:40 [error] 4209#0: *17 connect() failed (111: Connection refused) while connecting to upstream, client: 178.37.102.52, server: request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.wiki.piwo.org" 2011/04/15 16:47:43 [error] 4209#0: *17 connect() failed (111: Connection refused) while connecting to upstream, client: 178.37.102.52, server: 2011/04/15 16:49:00 [error] 4209#0: *117 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 80.82.21.93, serv er: www.xxxx upstream: "fastcgi://127.0.0.1:9000", host: Co ciekawe, kiedy odpalam jakiegoś vhosta na innym porcie niż 80, lub zostawiam tylko jednego vhosta na 80-porcie to pracuje poprawnie. Domyślam się więc, że jest to kwestia tuningu konfiguracji. Poradzicie ? Edytowano Kwiecień 15, 2011 przez elroy (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość nrm Zgłoś post Napisano Kwiecień 15, 2011 wywal tego spawna, jakos specjalnie go potrzebujesz? To cholerstwo zawsze było mało stabilne. Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 15, 2011 wywal tego spawna, jakos specjalnie go potrzebujesz? To cholerstwo zawsze było mało stabilne. A jakie proponujesz rozwiązanie? Nie ukrywam, że kierowałem się opisami znalezionymi w sieci i stąd ten spawncgi. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość nrm Zgłoś post Napisano Kwiecień 15, 2011 Kiedyś to nie było wyjścia stąd te opisy, ale od niedawna jest FPM oficjalnie razem z PHP 5.3 i powiem Ci, że jestem zachwycony. Tyle razy co tamto się wysypywało z niewiadomo jakiego powodu to zliczyć nie mogę, a logi FPMa czyste jak łza. Byłem mocno zaskoczony. http://php-fpm.org/ http://php-fpm.org/about/ http://interfacelab.com/nginx-php-fpm-apc-awesome/ http://www.howtoforge.com/installing-php-5.3-nginx-and-php-fpm-on-ubuntu-debian http://matipl.pl/2010/10/08/php-5-3-3-z-fpm-nginx/ http://nginx.com.pl/instalacja-php5-fpm-nginx/ u mnie lata php5.3+fpm+nginx Udostępnij ten post Link to postu Udostępnij na innych stronach
Life 15 Zgłoś post Napisano Kwiecień 15, 2011 ja co prawda z Lighttpd (bardziej mi przypadł do gustu niż Nginx) ale też z PHP-FPM i jestem szczerze zadowolony polecam sprawdzić Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 15, 2011 Tak jak koledzy radzą, tak właśnie robię Wszystko fajnie, ale mam problem natury tych głupich i wrednych php5-fpm zainstalowałem z paczki Wygląda to tak PHP 5.3.5-0.dotdeb.0 (fpm-fcgi) (built: Jan 7 2011 01:24:09) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH Ale uparcie próbuje wczytywać plik php.ini z katalogu /root choć w odpowiedniej ścieżce php.ini jest..... Zobaczcie wynik z phpinfo. Jak wywalę php.ini z roota, to skrypty działają, ale phpinfo () zwraca białą stronę... Zaraz mnie trafi Gdzie można na stałe podać php-fpm aby czytało dany plik ini ? Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Kwiecień 15, 2011 Ale uparcie próbuje wczytywać plik php.ini z katalogu /root choć w odpowiedniej ścieżce php.ini jest..... To jaka powinna być ta ODPOWIEDNIA ŚCIEŻKA? to skrypty działają, ale phpinfo () zwraca białą stronę... Spróbuj zamiast skryptu <? phpinfo(); ?> dać <?php phpinfo(); ?> Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 15, 2011 <?php phpinfo(); ?> No i to pomogło - dzięki wielkie kafi ! Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość patrys Zgłoś post Napisano Kwiecień 16, 2011 To cholerstwo zawsze było mało stabilne. możesz to jakoś rozwinąć? Udostępnij ten post Link to postu Udostępnij na innych stronach
Life 15 Zgłoś post Napisano Kwiecień 16, 2011 (edytowany) zdaje się że w php.ini: short_opentag=On Jeśli chodzi o inne php.ini dla każdego workera PHP-FPM ja robię tak że mam ogólne php.ini dla wszystkich a konkretne parametry dla odpowiednich użytkowników (vhostów) daję jako parametry w FPM przez php_admin_value, php_value lub php_flag. Czyli nieco podobnie jak w Apache. Czyli np. część takiego konfiga wygląda tak: php_admin_value[user_dir] = /home/vhost/$pool php_admin_value[open_basedir] = /home/vhost/$pool php_admin_value[upload_tmp_dir] = /home/vhost/$pool/tmp php_value[include_path] = /home/vhost/$pool php_admin_value[session.save_path] = /home/vhost/$pool/tmp Czyli każdy vhost ma swój katalog dla sesji, temp-a i ustawiony open_basedir. Oczywiście można sobie tam wstawić co się chce mieć w konfiguracji jak limity pamięci, wielkości cache (jeśli ktoś używa), rozmiar przesyłanych plików, oddzielne logi itp. itd. Edytowano Kwiecień 16, 2011 przez Life (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 16, 2011 Szczerze, to potrzebuję w zasadzie tylko dla jednego vhosta register_globals on - jak to zrobić ? A druga sprawa, mam już pracującego nginxa z php5-fpm ale coś jeszcze nie tak z konfiguracją. Strasznie mi rośnie load. W parę minut osiąga 15-20, a przy włączonym apache mam około 0.3-0.5 Konfig php mam taki fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass backend; fastcgi_index index.php; include fastcgi_params; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; Czy coś istotnego powinienem zmienić jeszcze istotnego w ustawieniach php-fpm ? Serwer to vps z 1.5Ghz, 384MB ramu. Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 16, 2011 (edytowany) A jeszcze nginx_status Active connections: 27 server accepts handled requests 168 168 531 Reading: 0 Writing: 1 Waiting: 26 Ależ dzisiaj spamuję Ale nie spocznę, jak nie skończę. Wydaje mi się, że sedno tkwi w ustawieniach php5-fpm.conf pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 0 Może zmniejszyć pm.start_servers ? Edytowano Kwiecień 16, 2011 przez elroy (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Life 15 Zgłoś post Napisano Kwiecień 16, 2011 (edytowany) Zależy od obciążenia (oglądalności) ale możesz zmniejszyć ilość procesów na starcie na 5-10 i maksymalną na 30 zobaczyć jak to się będzie zachowywać. A load wysoki jest z jakiego powodu? CPU czy dysk? jak CPU to powinno zadziałać jak dysk to już nie koniecznie. Możesz też ustawić pm.max_requests na pocątek na 500 i ewentualnie zwiększać. Edytowano Kwiecień 16, 2011 przez Life (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 16, 2011 Load robił się chyba ze względu na zajętość pamięci Zmieniłem na pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 500 i na razie pracuje stabilnie. Ogromne dzięki za pomoc! Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Kwiecień 21, 2011 Co prawda nginx z fpm sprawuje się iście fantastycznie, to miałbym prośbę o interpretację i wytłumaczenie co znaczą poszczególne informacje z nginx_status Mam tak: Active connections: 64 server accepts handled requests 73184 73184 187259 Reading: 3 Writing: 1 Waiting: 60 Najbardziej interesuje mnie Reading, Writing, Waiting. Co dokładnie znaczy ? Udostępnij ten post Link to postu Udostępnij na innych stronach