Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-09-28 10:10:29

  shreku - Użytkownik

shreku
Użytkownik
Skąd: Warszawa
Zarejestrowany: 2005-06-03
Serwis

Debugowanie serwera apache2 - wolna odpowiedź serwera

Witam,
nosze sie z takim "małym" problemem pt. gdy chce wejść na strone ( ip.board + xcache + mysqlquery )to zanim przegladarka zacznie dostawać dane od serwera to mijają ze 3-4 sekundy. Problem bl wiekszy a to dlatego ze miałem źle cos wpisane w /etc/hosts i trwało to ponad 10 sekund - proawdopodobnie resolv nazwy hosta localhosta poprzez zew. ip a nie przez 127.0.0.1.

Problem występuje w różnej skali na tym serwerze, wordpress także ma czkawke innych stron jeszcze nie odpalałem, natomiast pliki serwowane tylko przez apacha bez uzycia php zapierniczają az miło - przejrzałem na blizniaczym serwerze konfiguracje php5, apache'a, mysql'a i pliki sa identyczne - wyłączenie ładowania ioncube'a tez nic nie dało i juz ręce mi opadają nie wiem gdzie szukać tej dzióry :(

serwer ma 2 karty sieciowe 1 - swiat oraz 1 openvpn do spiecia z innymi serwerami. DNS'y sa tylko na świat bez intranetu, domyslna trasa idzie odrazu przez karte wan'owa. TCP dumpem sprawdzałem to w czasie czkawki NIC na interfejsie sie nie działo. Czyli coś na serwerze blokuje phpa;/

serwis www -> http://adechade.com

nie wiem czym i jak debugować apacha czy on wisi na jakimś resolvie czy na czyms innym.

Ostatnio edytowany przez shreku (2010-09-28 10:17:46)

Offline

 

#2  2010-09-28 17:08:29

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Debugowanie serwera apache2 - wolna odpowiedź serwera

Kod:

sudo apache2 -t

-to pokaże błędy w konfiguracji apacha.

W plikach konfiguracyjnych poszukaj opcji log level i włącz debug, a potem logi...


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2010-09-28 18:25:20

  lessmian - Użytkownik

lessmian
Użytkownik
Skąd: Kraków
Zarejestrowany: 2009-09-25

Re: Debugowanie serwera apache2 - wolna odpowiedź serwera

Obstawiał bym na to, że ciągnie dane z bazy i dopiero jak je dostanie, to zaczyna renderować stronę. Nie wiem tylko jak dużą masz tą bazę, ale wordpress i podobne mu aplikacje, lubią trzymać wszystko co się rusza w bazie.

Jak bardzo chcesz to sprawdzić to możesz to zrobić np. tak:
1. Ustalasz pid procesu apache który obsługuje Twoje zapytanie - może to być trudne, ale w środowisku testowym powinno się udać bez większych problemów. Jeśli PHP masz jako CGI, zamiast pidu apache, bierzesz pid procesu PHP.
2. Jedziesz strace'em i patrzysz co tam w trawie piszczy:

Kod:

strace -p PID -e trace=network -tt

Gdzieś tam powinieneś wyczaić na czym wisi.

Offline

 

#4  2010-09-29 10:24:44

  shreku - Użytkownik

shreku
Użytkownik
Skąd: Warszawa
Zarejestrowany: 2005-06-03
Serwis

Re: Debugowanie serwera apache2 - wolna odpowiedź serwera

konfig poprawny - 2 warningi o braku vhostow na 2 ip.

strace

Kod:

Process 5448 attached - interrupt to quit
10:18:43.149436 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:18:43.149655 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:18:43.149782 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:18:43.165829 --- SIGCHLD (Child exited) @ 0 (0) ---
10:18:58.149421 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:18:58.149562 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:18:58.149673 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:18:58.165359 --- SIGCHLD (Child exited) @ 0 (0) ---
10:19:00.149398 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:19:00.149539 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:19:00.149647 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:19:00.164733 --- SIGCHLD (Child exited) @ 0 (0) ---
10:19:01.149391 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:19:01.149532 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:19:01.149640 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:19:01.165993 --- SIGCHLD (Child exited) @ 0 (0) ---
10:19:02.149362 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:19:02.149503 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:19:02.149611 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:19:02.164785 --- SIGCHLD (Child exited) @ 0 (0) ---
10:19:03.149365 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:19:03.149572 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:19:03.149727 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:19:03.165427 --- SIGCHLD (Child exited) @ 0 (0) ---
10:19:04.149347 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:19:04.149484 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:19:04.149586 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:19:04.164343 --- SIGCHLD (Child exited) @ 0 (0) ---
10:19:29.149405 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:19:29.149547 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:19:29.149658 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:19:29.164333 --- SIGCHLD (Child exited) @ 0 (0) ---
10:20:07.149391 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:20:07.149596 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:20:07.149756 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:20:07.172712 --- SIGCHLD (Child exited) @ 0 (0) ---
10:20:10.149379 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 31
10:20:10.149520 connect(31, {sa_family=AF_INET6, sin6_port=htons(443), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
10:20:10.149629 getsockopt(31, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
10:20:10.165715 --- SIGCHLD (Child exited) @ 0 (0) ---

nic mi to nie mowi :|

apache działą na mpm-itk, kazdy vhost ma swojego usera takze ustaleni pidu to nie problem ale złapanie go to jes problem ;)

strace złapany z wywołania apacha tego najnizszego poziomu.

Problem jest taki ze ta strona działała na blizniaczym vps'ie potencjalnie taka sama konfiguracja jesli dobrze mi sie wydaje sprawdzałem konfigi i tam działało szybciej.

Offline

 

#5  2010-09-29 12:51:06

  zlyZwierz - Moderator

zlyZwierz
Moderator
Zarejestrowany: 2005-02-18
Serwis

Re: Debugowanie serwera apache2 - wolna odpowiedź serwera

A jaki MPM masz na tym apache?
Worker,  prefork czy coś...
PHP jako libphp, czy cgi...

Offline

 

#6  2010-09-29 15:00:40

  shreku - Użytkownik

shreku
Użytkownik
Skąd: Warszawa
Zarejestrowany: 2005-06-03
Serwis

Re: Debugowanie serwera apache2 - wolna odpowiedź serwera

MPM-ITK
libphp(chyba)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)