Skocz do zawartości
Zaloguj się, aby obserwować  
TheBlood

Apache Zjada Prawie Calą Moc Procesora

Polecane posty

Ekhem...witam,

 

Po wstępnej radosci z doskonalej konfiguracji by rusel (przy 100 osobach online czas generowania SQL poniżej 0,3 sekundy, malutki overload itd) po południu zaczęły się kłopoty...Przez nieuwagę zaznaczylem w phpmyadminie optymalizację największej tabeli w bazie, na forum bylo ponad 100 osob, serwer pożadnie zamulil przez kilkadziesiąt sekund i podjąłem decyzję o jego restarcie, bo nawet ftp nie odpowiadało. Po restarcie okazało się, że wczesniej optymalizowana tabela jest ciągle w użyciu, tak więc naprawilem ją i gdy już się wydawało, że po problemie...Zauważyłem znaczne spowolenie działania forum (czas generowania dochodzący do 3 sekund), ogromny wzrost overload dochodzący nawet do...70 i obciążenie prawie całego procesora, mimo mniejszej liczby odwiedzających online.

 

load average: 4.94, 3.81, 4.98

Tasks: 95 total, 4 running, 91 sleeping, 0 stopped, 0 zombie

Cpu(s): 98.0% us, 1.7% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.0% hi, 0.3% si

Mem: 1016412k total, 688904k used, 327508k free, 21916k buffers

Swap: 514072k total, 0k used, 514072k free, 261568k cached

24459 www-data 25 0 123m 29m 10m R 23.3 2.9 0:18.09 apache2

24437 www-data 25 0 127m 31m 8720 R 21.3 3.2 0:16.79 apache2

24501 www-data 16 0 121m 28m 12m S 15.0 2.9 0:04.85 apache2

24443 www-data 15 0 120m 27m 11m S 11.0 2.7 0:07.54 apache2

24455 www-data 15 0 121m 27m 11m S 10.7 2.7 0:06.25 apache2

24510 www-data 15 0 121m 27m 11m S 10.3 2.7 0:02.98 apache2

24507 www-data 15 0 121m 26m 10m S 6.0 2.7 0:03.85 apache2

1487 mysql 15 0 139m 51m 4688 S 1.7 5.1 6:02.93 mysqld

24461 www-data 15 0 120m 28m 12m S 0.3 2.9 0:06.21 apache2

 

 

 

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 2656 540 ? Ss 20:00 0:00 init [2]root 2 0.0 0.0 0 0 ? SN 20:00 0:00 [ksoftirqd/0]

root 3 0.0 0.0 0 0 ? S 20:00 0:00 [watchdog/0]

root 4 0.0 0.0 0 0 ? S< 20:00 0:00 [events/0]

root 5 0.0 0.0 0 0 ? S< 20:00 0:00 [khelper]

root 6 0.0 0.0 0 0 ? S< 20:00 0:00 [kthread]

root 130 0.0 0.0 0 0 ? S< 20:00 0:00 [kblockd/0]

root 131 0.0 0.0 0 0 ? S< 20:00 0:00 [kacpid]

root 211 0.0 0.0 0 0 ? S< 20:00 0:00 [kseriod]

root 243 0.0 0.0 0 0 ? S 20:00 0:00 [pdflush]

root 244 0.0 0.0 0 0 ? S 20:00 0:00 [pdflush]

root 245 0.0 0.0 0 0 ? S< 20:00 0:00 [kswapd0]

root 246 0.0 0.0 0 0 ? S< 20:00 0:00 [aio/0]

root 247 0.0 0.0 0 0 ? S< 20:00 0:00 [jfsIO]

root 248 0.0 0.0 0 0 ? S< 20:00 0:00 [jfsCommit]

root 249 0.0 0.0 0 0 ? S< 20:00 0:00 [jfsSync]

root 250 0.0 0.0 0 0 ? S< 20:00 0:00 [xfslogd/0]

root 251 0.0 0.0 0 0 ? S< 20:00 0:00 [xfsdatad/0]

root 969 0.0 0.0 0 0 ? S< 20:00 0:00 [kpsmoused]

root 978 0.0 0.0 0 0 ? S< 20:00 0:00 [kjournald]

root 1127 0.0 0.0 0 0 ? S< 20:00 0:00 [kjournald]

root 1345 0.0 0.0 6532 788 ? Ss 20:01 0:00 /sbin/syslogd

root 1348 0.0 0.0 2656 404 ? Ss 20:01 0:00 /sbin/klogd

bind 1355 0.0 0.2 43396 2772 ? Ss 20:01 0:00 /usr/sbin/named -

root 1365 0.0 0.2 40280 2788 ? Ss 20:01 0:00 /usr/sbin/lwresd

root 1372 0.0 3.3 66188 33564 ? Ss 20:01 0:00 /usr/sbin/spamd -

root 1377 0.0 0.0 3864 396 ? S 20:01 0:00 /usr/sbin/courier

root 1378 0.0 0.0 7068 552 ? S 20:01 0:00 /usr/lib/courier/

root 1384 0.0 0.0 8836 732 ? S 20:01 0:00 /usr/sbin/courier

root 1386 0.0 0.0 3732 352 ? S 20:01 0:00 /usr/sbin/courier

root 1397 0.0 0.0 8832 732 ? S 20:01 0:00 /usr/sbin/courier

root 1399 0.0 0.0 3732 352 ? S 20:01 0:00 /usr/sbin/courier

root 1403 0.0 0.0 7068 260 ? S 20:01 0:00 /usr/lib/courier/

root 1406 0.0 0.0 8832 736 ? S 20:01 0:00 /usr/sbin/courier

root 1408 0.0 0.0 3868 488 ? S 20:01 0:00 /usr/sbin/courier

root 1410 0.0 0.0 7068 260 ? S 20:01 0:00 /usr/lib/courier/

root 1411 0.0 0.0 7068 260 ? S 20:01 0:00 /usr/lib/courier/

root 1412 0.0 0.0 7068 260 ? S 20:01 0:00 /usr/lib/courier/

root 1413 0.0 0.0 11364 664 ? S 20:01 0:00 /usr/lib/courier/

root 1423 0.0 0.0 8836 732 ? S 20:01 0:00 /usr/sbin/courier

root 1425 0.0 0.0 3732 348 ? S 20:01 0:00 /usr/sbin/courier

root 1430 0.0 0.0 6520 732 ? Ss 20:01 0:00 /usr/sbin/inetd

root 1439 0.0 3.4 70636 35040 ? S 20:01 0:00 spamd child

root 1440 0.0 3.4 70788 35172 ? S 20:01 0:00 spamd child

root 1441 0.0 3.4 71116 35508 ? S 20:01 0:00 spamd child

root 1442 0.0 3.4 70620 34992 ? S 20:01 0:00 spamd child

root 1443 0.0 3.1 66188 31948 ? S 20:01 0:00 spamd child

root 1450 0.0 0.1 10024 1420 ? S 20:01 0:00 /bin/sh /usr/bin/

mysql 1487 3.7 5.1 142828 52336 ? S 20:01 5:57 /usr/sbin/mysqld

root 1488 0.0 0.0 2628 516 ? S 20:01 0:00 logger -p daemon.

root 1624 0.0 0.1 18288 1536 ? Ss 20:01 0:00 /usr/lib/postfix/

postfix 1628 0.0 0.1 16548 1412 ? S 20:01 0:00 qmgr -l -t fifo -

root 1635 0.0 0.1 31792 1264 ? Ss 20:01 0:00 /usr/sbin/saslaut

root 1638 0.0 0.0 31792 840 ? S 20:01 0:00 /usr/sbin/saslaut

root 1639 0.0 0.0 31792 776 ? S 20:01 0:00 /usr/sbin/saslaut

root 1640 0.0 0.0 31792 776 ? S 20:01 0:00 /usr/sbin/saslaut

root 1641 0.0 0.0 31792 776 ? S 20:01 0:00 /usr/sbin/saslaut

root 1647 0.0 0.1 18284 1088 ? Ss 20:01 0:00 /usr/sbin/sshd

root 1653 0.0 0.0 2704 316 ? Ss 20:01 0:00 /sbin/mdadm -F -i

daemon 1656 0.0 0.0 6936 404 ? Ss 20:01 0:00 /usr/sbin/atd

root 1659 0.0 0.0 9052 840 ? Ss 20:01 0:00 /usr/sbin/cron

root 1672 0.0 0.0 2648 500 tty1 Ss+ 20:01 0:00 /sbin/getty 38400

root 1673 0.0 0.0 2652 504 tty2 Ss+ 20:01 0:00 /sbin/getty 38400

root 1674 0.0 0.0 2652 504 tty3 Ss+ 20:01 0:00 /sbin/getty 38400

root 1675 0.0 0.0 2648 496 tty4 Ss+ 20:01 0:00 /sbin/getty 38400

root 1676 0.0 0.0 2648 500 tty5 Ss+ 20:01 0:00 /sbin/getty 38400

root 1677 0.0 0.0 2648 500 tty6 Ss+ 20:01 0:00 /sbin/getty 38400

root 9714 0.0 0.2 38624 2268 ? Ss 20:50 0:00 sshd: root@pts/0

root 9799 0.0 0.1 10136 1680 pts/0 Ss 20:51 0:00 -bash

root 20142 0.0 1.2 113476 12956 ? Ss 22:04 0:00 /usr/sbin/apache2

root 20143 0.0 0.1 10064 1564 ? S 22:04 0:01 /usr/bin/perl /us

postfix 22509 0.0 0.1 16512 1372 ? S 22:23 0:00 pickup -l -t fifo

postfix 22520 0.0 0.1 16860 1672 ? S 22:23 0:00 trivial-rewrite -

www-data 24121 2.8 2.9 124740 29524 ? S 22:37 0:05 /usr/sbin/apache2

www-data 24122 2.8 2.8 124788 29008 ? S 22:37 0:06 /usr/sbin/apache2

www-data 24155 2.8 2.7 124380 28408 ? S 22:37 0:05 /usr/sbin/apache2

www-data 24437 7.8 2.2 122388 23156 ? S 22:40 0:00 /usr/sbin/apache2

www-data 24442 15.3 2.3 122716 24076 ? S 22:40 0:00 /usr/sbin/apache2

www-data 24443 0.0 0.7 113476 7388 ? S 22:40 0:00 /usr/sbin/apache2

root 24446 0.0 0.0 8780 932 pts/0 R+ 22:40 0:00 ps -aux

 

 

Czy spotkał się ktoś już z podobnym problemem? Jest na to jakaś rada? Naturalnie najlepiej byłoby skontaktować się z samym ruselem, ale coś słuch o nim zaginął...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrick

Pokazałeś dużo oprócz strony sprzętowej ...

Ale pewnie od strony programowej dało by się podnieść wydajność zmieniając konfiguracje bądź przykładowo serwer www.

 

ps.

skontaktować się z samym ruselem, ale coś słuch o nim zaginął...
znam ten ból ...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sprzęt to Athlon 3000+ 64bit i 1GB ram. Co do zmiany serwera: mam nadzieję, że to nie bedzie konieczne tymbardziej, że jeszcze niedawno wszystko działało wyśmienicie przy większym obciążeniu...Zaś co do poprawy wydajności: ekhem...może jakieś sugestie na początek? Byłbym wdzięczny.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Skillowalem wszystkie apache i uruchomilem je od nowa. Niestety 0 efekt.

 

Obecnie zuzycie cpu: 98%

Ramu: 52%

 

Co jeszcze ciekawsze zaczelo swapu uzywac (30% zuzycia), czego wczesniej nie bylo (co widac po pierwszym logu :|)

 

Brak mi pomyslow, przegladalem config w pliku apache2.conf, to wszystko jest skonfigurowane zgodnie z poradami znalezionymi w kilku tematach na wht (a co konfigurowal rusel)

 

 

Tak, rocoto ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Obecnie na forum mam 37 osob online a proc jest mielony jakby na moim forum bylo z 500...To nie jest normalne przeciez...

 

Zresztą przed niefortunną optymalizacją tabeli wszystko smigalo a obciazenie bylo minimalne, wiec tu raczej sam skrypt ma malo do gadania, tymbardziej ze na forum zostala przebudowana wyszukiwarka i read_history na wzor vb (co najmniej 2x mniej zapytan, brak indeksacji slow w dodatkowej tabeli itd) i co za tym idzie generowane obciazenie znacznie mniejsze...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A z tą tabelą w bazie na pewno jest wszystko w porządku? Przymula zawsze czy jak ktoś jest na forum i korzysta z niej? Może małe przywrócenie z backupu pomoże?

 

Z dokumentacji mysql:

Warning: Killing a REPAIR TABLE or OPTIMIZE TABLE operation on a MyISAM table results in a table that is corrupted and unusable. Any reads or writes to such a table fail until you optimize or repair it again (without interruption).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Heh, dzis na forum o 12 weszlo 185 osob w jednej chwili (nowy rekord) i serwer się wysypal, tzn padl. Dopiero hard reboot pomogl :/

 

Z samym muleniem sprawa wyglada nastepujaco: Wchodzi 100 osob jednoczesnie, obciazenie duze, czas generowania sql po 2 sek, ale jakos dziala. A potem ni stad ni zowad przy np 70, czy 60 osobach serwer zaczyna tracic stabilnosc, overlod rosnie do np 18, zjada prawie caly ram, wowczas restartuję apache. Forum dziala przez ok. minutę jak marzenie, czas generowania piękny itp, ale jednoczesnie generowane obciazenie nie spada ponizej pewnego pulapu (50% zuzycia zasobow). Nie ma reguly - raz zaczyna mulic przy 60 osobach, a pozniej przy 100 dziala w miarę normalnie... Baza jest jak najbardziej sprawna, bo sprawdzalem. Co prawda to co zacytowales, trochę mnie zmartwilo, ale tak na zdrowy rozum, gdyby bylo cos z bazą, to raczej obciazenie generowane przez mysql powinno byc wysokie, a nie przez apache, prawda? Choc nie wiem jak to jest w praktyce...

 

Macie jakies pomysly?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

może zrób tak Wyłącz apache'a, poprzednio usuń z forum tabele read_history i te używane do wyszukiwania ( nie pamiętam jak się nazywały ) i z konsolki na mysql napraw baze, potem w pa można odbudować tabele search...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
może zrób tak Wyłącz apache'a, poprzednio usuń z forum tabele read_history i te używane do wyszukiwania ( nie pamiętam jak się nazywały ) i z konsolki na mysql napraw baze, potem w pa można odbudować tabele search...

 

W moim forum historia nieczytanych postow oraz wyszukiwarka zostaly przebudowane. Teraz historia nieczytanych postow dziala w ramach tabeli z userami. Silnik wyszukiwarki zaś działa na zupełnie innej zasadzie niż tradycyjna szukajka w przemo. Slowa nie są indeksowane w oddzielnej tabeli (wordmatch bodajze). Obecna wyszukiwarka przeczesuje cale posty w fulltext tabeli posts. Dzieki tym zabiegom baza zajmuje 0 30% mniej miejsca, a samo forum generuje znacznie mniejsze obciazenie.

 

Tak wiec wiesz... wyczyszczenie read history, czy wyczyszczenie tabel wordmatch nic nie da, bo one i tak są puste, a wywalenie postow w fulltext nie wchodzi w grę z wiadomych powodow :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dzieki tym zabiegom baza zajmuje 0 30% mniej miejsca, a samo forum generuje znacznie mniejsze obciazenie.

jakoś wątpię żeby ten zabieg był mniej zasobożerny...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Cos wczoraj mialem dobry dzien, bo o 3 wpadlem na pewien pomysl, ktory okazal się strzalem w dziesiątkę. Okazało się, że apache jest zajeżdzane przez zbyt duzy plik cache odpowiedzialny za strukturę i kolory grup. Usunalem dwie najwieksze z nich, wielkosc pliku cache zmniejszyla się o 98% a obciazenie serwera spadlo o polowę. Load nawet 1.00 nie przekracza...Trochę jeszcze popracuję nad tym cachem i myslę, że będę mial najszybciej dzialajace przemo o tej wielkosci w Polsce :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Cos wczoraj mialem dobry dzien, bo o 3 wpadlem na pewien pomysl, ktory okazal się strzalem w dziesiątkę. Okazało się, że apache jest zajeżdzane przez zbyt duzy plik cache odpowiedzialny za strukturę i kolory grup. Usunalem dwie najwieksze z nich, wielkosc pliku cache zmniejszyla się o 98% a obciazenie serwera spadlo o polowę. Load nawet 1.00 nie przekracza...Trochę jeszcze popracuję nad tym cachem i myslę, że będę mial najszybciej dzialajace przemo o tej wielkosci w Polsce :P

 

 

No i pieknie. Przez caly wczorajszy dzien bylo dobrze, ale tak zle jak dzis to jeszcze nie bylo. Caly czas 100% apache i 98% ram :/ Macie jakies pomysly? ;/

 

 

UPDATE: Heh, ddosuje mnie konkurencja.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
No i pieknie. Przez caly wczorajszy dzien bylo dobrze, ale tak zle jak dzis to jeszcze nie bylo. Caly czas 100% apache i 98% ram :/ Macie jakies pomysly? ;/

UPDATE: Heh, ddosuje mnie konkurencja.

to z dosowaniem prze konkurencje to żart?

może zrób w cronie żeby Ci kasował cache co kilka godzin jeżeli te ddosowanie to nie żart...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Myslalem, że to ddos, bo na to wskazywala ilosc połączeń do apache i ilosc zjadanego transferu, ale chyba wygląda na to, ze apache się skopal i zapętla, bo procesy zombie liczę już w dziesiątkach. Sprawa cache jest zamknieta, bo ich laczna wielkosc (kilkadziesiat plikow) nie przekracza 200kb.

 

Jutro z administratorami sprobuję przeinstalowac apache & spolkę do nowszych wersji, gdyz obecne są z epoki kamienia lupanego i zobaczymy...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jaki to skrypt ?

 

Troche dziwne, na tak potezna maszyne aby tyle zzeralo.

 

U mnie przy 188 ludzikow online wychodzi:

 

load average: 1.78, 1.66, 1.92

Cpu(s): 30.1% us, 0.3% si

Mem: 515808k total, 412368k used, 103440k free, 34452k buffers

 

a maszynka to zwykly 1ghz + 512 ram, oczywiscie pentium. Do tego apache2 + PHP4 + APC

 

Nic fikusnego tam nie jest poinstalowane. No chyba ze vBulletin + APC tak nadgania.

 

Ostatnio na necie slyszy sie o ngnix'ie. Mial ktos z tym jakies doswiadczenia? Ponoc dwukrotnie lepsza wydajnosc od Apacha ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dobra, juz sobie w sumie poradzilem z konfiguracją apache.

 

Potrzebuję jedynie na wszelki wypadek skryptu, który np po przekroczeniu wartosci load 10.0 restartował usługę apache2 (a nie caly serwer). Czy ktoś zna taki skrypt?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok dzięki bellerofont, przyjrzę się temu hm..programowi.

 

riklaunim wczytalem backup bazy z rana i już było w porządku. Co do samej bazy: jest w 100% sprawna, gdyż niedawno zamówiłem audyt w pewnej firmie i wynik był pozytywny ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×