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.

 

Wiszące procesy apacha


10 odpowiedzi na ten temat

Wiszące procesy apacha

#1 gwn

    Nowy użytkownik

  • Użytkownicy
  • 7 postów

Napisany 26 listopad 2011 - 13:06

Witam

Mam problem z wiszącymi procesami na serwerze.
Serwer www to apache + fcgi

w konf. fcgi jest:
<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
FcgidIdleTimeout   10
FcgidProcessLifeTime  600
FcgidMaxProcesses   400
FcgidMaxProcessesPerClass 3
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 20
FcgidIOTimeout 250
FcgidErrorScanInterval 1
FcgidFixPathinfo 0
FcgidIdleScanInterval 5
FcgidBusyTimeout 100
FcgidMaxRequestsPerProcess  5000
FcgidMaxRequestInMem 67108864
FcgidMaxRequestLen  134217728
  PHP_Fix_Pathinfo_Enable 1
  OutputBufferSize 0
</IfModule>


max_execution_time w php tez na 600

a procesy wisza i wiszą. Co możę być przyczyną problemu i jak to rozwiązać ?

strace procesu pokazuje tylko:
strace -p 20351
Process 20351 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = 0
poll([{fd=8, events=POLLOUT}], 1, 1000) = 0 (Timeout)
poll([{fd=8, events=POLLOUT}], 1, 1000) = 0 (Timeout)
poll([{fd=8, events=POLLOUT}], 1, 1000) = 0 (Timeout)
poll([{fd=8, events=POLLOUT}], 1, 1000) = 0 (Timeout)
poll([{fd=8, events=POLLOUT}], 1, 1000) = 0 (Timeout)
poll([{fd=8, events=POLLOUT}], 1, 1000) = 0 (Timeout)


#2 tym

    Weteran WHT

  • WHT Pro
  • PipPipPipPipPipPipPipPip
  • 767 postów
  • Skąd:Poznań
  • Firma:DG

Napisany 26 listopad 2011 - 13:19

To nie jest problem, chyba że wyżerają ci dużo pamięci.
Procesy oczekują na połączenia, wg konfiguracji.
Zmniejsz:

Cytuj

FcgidMaxProcesses do 50
FcgidProcessLifeTime do 100

dodaj

Cytuj

DefaultMaxClassProcessCount 10
DefaultMinClassProcessCount 1
MaxProcessCount 30

Szukasz ciekawych ofert serwerów VPS? Sprawdź na www.kuptanioserwer.pl
Masz problem z serwerem? Szybka reakcja, najlepsze rozwiązania, dobre ceny, faktura VAT. Kontakt PW.

#3 gwn

    Nowy użytkownik

  • Użytkownicy
  • 7 postów

Napisany 26 listopad 2011 - 14:20

Zobacz posttym, o 26 listopad 2011 - 13:19, powiedział:

To nie jest problem, chyba że wyżerają ci dużo pamięci.
Procesy oczekują na połączenia, wg konfiguracji.
Zmniejsz:



dodaj

Dzięki za odpowiedź.

Nazwy parametrów, które podałeś są zastąpione nowszymi:
http://httpd.apache....tml#page-header

Mam je dodane i zmieniłem wg Twojej rady na:
FcgidMaxProcesses   50
FcgidMaxProcessesPerClass 10
FcgidMinProcessesPerClass 1

Dziwił mnie tylko fakt, że :
FcgidProcessLifeTime 600 ( czyli ustawione na 10 min, wartość wybrana przez programiste ustawiłem tak samo jak max_execution_time w php.ini na 600 )

Nie zabija procesów po minięciu czasu. Czy on zacznie zabijać w momencie gdy przekroczona zostanie maksymalna liczba procesów ?

#4 B0FH

    Często na forum

  • Użytkownicy
  • 69 postów
  • Skąd:Żygląd

Napisany 26 listopad 2011 - 15:51

tak sie nie sprawdza czy proces "wisi" tylko po tym czy jest zombie, a jak juz wyzej zostalo wspomniane to normalne ze apach (i nie tylko) uruchamia tyle instancji zeby obslugiwac wielowatkowo ruch

#5 tym

    Weteran WHT

  • WHT Pro
  • PipPipPipPipPipPipPipPip
  • 767 postów
  • Skąd:Poznań
  • Firma:DG

Napisany 26 listopad 2011 - 15:58

Zobacz postgwn, o 26 listopad 2011 - 14:20, powiedział:

Dziwił mnie tylko fakt, że :
FcgidProcessLifeTime 600 ( czyli ustawione na 10 min, wartość wybrana przez programiste ustawiłem tak samo jak max_execution_time w php.ini na 600 )

Nie zabija procesów po minięciu czasu. Czy on zacznie zabijać w momencie gdy przekroczona zostanie maksymalna liczba procesów ?

W tym przypadku rzeczywiście zostaw 600.
Szukasz ciekawych ofert serwerów VPS? Sprawdź na www.kuptanioserwer.pl
Masz problem z serwerem? Szybka reakcja, najlepsze rozwiązania, dobre ceny, faktura VAT. Kontakt PW.

#6 tom3kk

    Często na forum

  • Użytkownicy
  • 72 postów
  • Skąd:Oświęcim

Napisany 26 listopad 2011 - 19:32

PHP_FCGI_CHILDREN we wraperze .sh php masz na ile ustawione?
stary slackware'owiec

irc.freenode.net  @ #slackware.pl

#7 Miłosz

    Weteran WHT

  • Moderatorzy
  • PipPipPipPipPipPipPipPip
  • 2479 postów
  • Skąd:Bydgoszcz/Tuchola
  • Firma:Sys-Com
  • Imię:Miłosz
  • Nazwisko:Oller

Napisany 26 listopad 2011 - 21:27

gwn, możesz dodać do konfiguracji jeszcze np:

FcgidZombieScanInterval 30
FcgidIdleScanInterval 90
FcgidBusyScanInterval 90

Miłosz GG: 3312894 JID: ollerm@jabber.org
Konfiguracja i administracja serwerami dedykowanymi/RPS/VPS - Faktura VAT
Idealny hosting | Domeny | Hosting dla Firm

#8 kafi

    Weteran WHT

  • WHT Pro
  • PipPipPipPipPipPipPipPip
  • 2540 postów

Napisany 27 listopad 2011 - 00:31

Cytuj

a procesy wisza i wiszą. Co możę być przyczyną problemu i jak to rozwiązać ?
Ale to jest właśnie istota FastCGI, że procesy wiszą sobie w tle i po zakończeniu zadania nie są zakańczane.
Dzięki temu system przy każdym przychodzącym żądaniu nie musi poświęcać cennego czasu na jego tworzenie, ładowanie bibliotek, no i końcowe sprzątanie. Jeśli chcesz, żeby się zakańczały, to zostań przy zwykłym CGI. Z tym, że to może być w momentach peaku dosyć bolesne.

#9 gwn

    Nowy użytkownik

  • Użytkownicy
  • 7 postów

Napisany 27 listopad 2011 - 11:48

Dzięki za odpowiedzi.

Zobacz posttom3kk, o 26 listopad 2011 - 19:32, powiedział:

PHP_FCGI_CHILDREN we wraperze .sh php masz na ile ustawione?


export PHP_FCGI_MAX_REQUESTS=500
export PHP_FCGI_CHILDREN=3

Ok, czyli wisieć ich w sumie będzie tyle co ustawiłem sobie w FcgiMaxProcess. A czy da się ograniczyć jedną domenę do określonej liczby procesów ? Np dodając we wraperze z którego korzysta ta domena odpowiednią zmienną ? Sytuacja teraz u mnie wyglada tak że domena jednego z userów korzysta aż z połowy procesów określonej w FcgiMaxProcess.

Nie chce ograniczać ogólnej liczby procesów usera w /etc/security/limits.conf tylko przyciąć na apachu żeby nie uruchamiało się ich tak dużo z jednej domeny.

EDIT:
Wg. rady Miłosza dodałem również:
FcgidIdleTimeout   100
FcgidBusyTimeout 600
FcgidIdleScanInterval 60
FcgidBusyScanInterval 60
FcgidZombiScanInterval 30

Ten post był edytowany przez gwn dnia: 27 listopad 2011 - 11:59


#10 tom3kk

    Często na forum

  • Użytkownicy
  • 72 postów
  • Skąd:Oświęcim

Napisany 27 listopad 2011 - 12:08

>>export PHP_FCGI_CHILDREN=3

I widzisz tu masz blad. Jesli decydujesz sie sie na to aby modul fcgid zarzadzal procesami PHP to powinienes tego globala ustawic na zero, gdyz jak PHP sobie wypusci swojego child'a to modulek nie ma nad nim w ogole kontroli, malo tego - proces moze zawisnac i bedzie tak sobie wisiec do calkowitego restartu apache (i tak faktycznie jest)

Masz nawet zmianke w dokumentacji, do ktorej link sam podales:

Cytuj

PHP child process management (PHP_FCGI_CHILDREN) should always be disabled with mod_fcgid, which will only route one request at a time to application processes it has spawned; thus, any child processes created by PHP will not be used effectively. (Additionally, the PHP child processes may not be terminated properly.) By default, and with the environment variable setting PHP_FCGI_CHILDREN=0, PHP child process management is disabled.

Podobny haczyk jest z PHP_FCGI_MAX_REQUESTS, otoz jesli planujesz przyciac max req per process to powinienes to robic w module fcgid, tego globala ustaw na jakiegos wielkiego np. 10000 - chodzi o to aby ten global nie byl mniejszy niz max w fcgid.

Ten post był edytowany przez tom3kk dnia: 27 listopad 2011 - 12:08

stary slackware'owiec

irc.freenode.net  @ #slackware.pl

#11 gwn

    Nowy użytkownik

  • Użytkownicy
  • 7 postów

Napisany 27 listopad 2011 - 16:51

No i to jest to. Teraz procesy wiszą ale przez taką liczbę czasu jak ustawiłem w konfiguracji i nie jest ich tak dużo. Dzięki bardzo :)





1 Użytkowników czyta ten temat

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