Strona 1 z 1

apache2, fcgid, suEXEC - wysokie obciążennie

: 07 maja 2012, 10:50
autor: raczkowski1
Witam.
Mam VPS-a (1G RAM, 956M partycja wymiany, CPU 3.2GHz) wirtualizowany na ESXi.
Mam na nim kilka stron, głównie joomla. Od kilku dni mam chwilami wysokie obciążenie:

Kod: Zaznacz cały

load average: 31.39, 11.82, 4.35
A to mi pokazuje polecenie:

Kod: Zaznacz cały

top - 10:38:34 up 2 days, 19:21,  1 user,  load average: 4.38, 1.51, 1.59
Tasks: 155 total,  14 running, 141 sleeping,   0 stopped,   0 zombie
Cpu(s): 20.9%us, 79.1%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1113304k total,   826132k used,   287172k free,   149116k buffers
Swap:   979956k total,      600k used,   979356k free,   306384k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19553 user1  20   0 66364  12m 8268 R  9.9  1.2   0:00.32 php
19383 user2  20   0 69504  15m 9248 R  7.9  1.4   0:07.06 php
19522 user1  20   0 70348  20m  11m R  7.9  1.9   0:00.70 php
19542 user1  20   0 71372  21m  11m R  7.9  1.9   0:00.68 php
19591 user2  20   0 71428  14m 6092 R  7.9  1.3   0:00.76 php
19597 user2  20   0 70660  13m 5664 R  7.9  1.2   0:00.60 php
19602 user2  20   0 69196  11m 5616 R  7.9  1.1   0:00.54 php
19605 user2  20   0 68668  11m 5216 R  7.9  1.0   0:00.50 php
19607 user2  20   0 69196  11m 5620 R  7.9  1.1   0:00.50 php
19613 user2  20   0 66900 9760 4408 R  7.9  0.9   0:00.34 php
19537 user1  20   0 65736 8260 4020 R  5.9  0.7   0:00.22 php
19496 user2  20   0 69236  16m 9.9m S  4.0  1.5   0:01.88 php
19500 root      20   0  2392 1164  884 R  2.0  0.1   0:00.84 top
 2413 mysql     20   0  113m  66m 4856 S  1.0  6.2  15:50.85 mysqld
    1 root      20   0  2104  684  588 S  0.0  0.1   0:20.24 init
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.20 kthreadd
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      15  -5     0    0    0 S  0.0  0.0   1:18.93 ksoftirqd/0
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:01.44 watchdog/0
    6 root      15  -5     0    0    0 S  0.0  0.0   0:26.60 events/0
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.12 khelper
   39 root      15  -5     0    0    0 S  0.0  0.0   0:10.70 kblockd/0
   41 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
   42 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify
  170 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kseriod
  208 root      15  -5     0    0    0 S  0.0  0.0   1:52.24 kswapd0
  209 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
  766 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata/0
  767 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux
  900 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_0
 1018 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kstriped
 1022 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ksnapd
 1040 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kdmflush
 1044 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kdmflush
 1048 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kdmflush
 1068 root      15  -5     0    0    0 S  0.0  0.0   0:04.62 reiserfs/0
 1140 root      16  -4  2288  780  488 S  0.0  0.1   0:00.46 udevd
 1639 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kpsmoused
 2092 daemon    20   0  1896  508  416 S  0.0  0.0   0:00.02 portmap
 2103 statd     20   0  1960  724  620 S  0.0  0.1   0:00.06 rpc.statd
 2314 root      20   0 28560 1676  952 S  0.0  0.2   0:37.33 rsyslogd
Głównie jedna strona powoduje wzrost obciążenia - wygląda na prostą.
Obserwowałem pamięć i nie jest wykorzystywana fizyczna, a partycja wymiany to nigdy nie widziałem aby była użyta.
Tylko opcje ,,CPU sys'' lub ,,us'' dochodzą do 100% i strony zaczynają mulić.

Konfiguracji fcgi:

Kod: Zaznacz cały

PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_CHILDREN=4
exec /usr/lib/cgi-bin/php
Czy może ktoś podpowiedzieć gdzie szukać rozwiązania problemu?

Pozdrawiam.

: 07 maja 2012, 11:13
autor: atsuki
Możesz albo starać się coś wymyślić z tym co masz, albo pójść trochę inną drogą. Osobiście porzuciłbym fcgi na rzecz php-fpm. Najłatwiej w sumie dodać sobie repozytoria z php5 i skonfigurować php-fpm. Z nim będziesz mógł sobie wydzielić inne procesy i reguły dla każdej ze stron - ilość procesów, wątków, progi restartu, czasy dostępu i inne. Da Ci to kontrolę i zapewni, że nawet jak jedna strona sprawia problemu, nie wpływa to w sposób drastyczny na pozostałe.

Choć fakt faktem, nie jest to odpowiedź na Twoje pytanie. Sprawdź ustawienia czasów dostępu, dla serwera apache i dla menadżera cgi. Jak je zmniejszysz to powinno pomóc. Możesz zastanowić się również nad jakimś układ - xcache, memcahce itp. Szczególnie jak napisałeś, że strona jest prosta, to po co męczyć cgi, jak można serwować ją z pamięci podręcznej?

: 07 maja 2012, 15:57
autor: raczkowski1
Dziękuję za sugestie.
Strona, która mi tak obciąża jest uruchomiona na wordpressie w wersji 3.3.2. Po wejściu na stronę jeszcze kilka sekund (7-10s) firefox coś ładuje, a proces php obciąża procesor na poziomie 80%.
Będę walczył dalej i dam znać czy coś pomogły Twoje sugestie.

Pozdrawiam.

: 08 maja 2012, 10:59
autor: atsuki
Zainstaluj do firefoxa wtyczkę firebug i zobacz co się tyle ładuje.

: 27 marca 2013, 12:00
autor: raczkowski1
Po długiej przewie wróciłem do tematu.

Mam zainstalowane apache2, fastcgi, php-fpm i suexec
Wszystko działa, gdy używam rewrite muszę do htaccess dopisać:

Kod: Zaznacz cały

RewriteRule ^fast-cgi-fake-handler/ - [L,NC]
aby działało.

Jednak chciałbym aby ta rola była dopisana w konfiguracji vhost i jednocześnie działały reguły zawarte w htaccess. Czy jest to możliwe?

Pozdrawiam.