Skocz do zawartości
daro2323

Duży load average przy małym cpu i ram

Polecane posty

Przed ustawieniem max limit i maxclient na 10 miałem coś takiego

189duze.obciazenie.jpg

 

Teraz mam tyle max 10 load average

190duzy.load.jpg

 

 

 

httpd.conf..............................................................

 

Timeout 25
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15


<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 5
ServerLimit 10
MaxClients 10
MaxRequestsPerChild 4000
</IfModule>


<IfModule worker.c>
StartServers 1
MaxClients 10
MinSpareThreads 1
MaxSpareThreads 4
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

 

działa na prefork.

 

mysql przez mysqltuner ok

jakieś sugestie?

 

Edytowano przez Gość (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

load zdarza sie co jakiś czas (w logach nic niepokojącego nie ma), pewnie miałeś na mysli vmstat podczas takiego większego loadu. jak będzie to wrzucę, a teraz strona działa ok i staty są takie.

 

[root@darex]-[~]#vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 328464 0 90548 0 0 55 29 0 166 6 2 91 0 0
0 0 0 328360 0 90608 0 0 52 0 0 28112 10 7 82 0 1
0 0 0 328352 0 90608 0 0 0 4 0 23252 0 0 100 0 0
0 0 0 326936 0 90608 0 0 0 0 0 26237 6 3 89 0 2
0 0 0 324656 0 90616 0 0 0 0 0 25471 7 4 89 0 0
1 0 0 327248 0 90616 0 0 0 16 0 25891 15 13 72 0 0
0 0 0 326108 0 90620 0 0 0 0 0 25531 11 5 83 0 1
0 0 0 326352 0 90280 0 0 0 0 0 26556 3 2 95 0 0
0 0 0 327468 0 90284 0 0 0 4 0 24018 1 0 98 0 1
0 0 0 333244 0 90284 0 0 0 0 0 23429 7 3 90 0 0
0 0 0 334832 0 90288 0 0 0 96 0 23343 0 1 99 0 0
0 0 0 333772 0 90288 0 0 0 16 0 24346 5 3 92 0 0
0 0 0 333652 0 90288 0 0 0 4 0 23728 3 3 92 0 2
0 0 0 333624 0 90296 0 0 0 8 0 25645 4 0 96 0 0
0 0 0 333644 0 90300 0 0 0 0 0 25282 4 3 92 0 1
0 0 0 334184 0 89800 0 0 0 12 0 26618 4 1 95 0 0
0 0 0 335300 0 89808 0 0 0 0 0 24618 8 5 87 0 0
0 0 0 335448 0 89700 0 0 0 4 0 25952 9 5 85 0 2
0 0 0 336576 0 89704 0 0 0 4 0 26251 6 2 92 0 0
0 0 0 336948 0 89372 0 0 0 4 0 26542 20 1 78 0 0
0 0 0 336948 0 89372 0 0 0 12 0 25099 0 0 100 0 0
2 0 0 336752 0 89168 0 0 8 0 0 27090 42 16 39 0 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 337232 0 88732 0 0 0 0 0 37894 1 0 98 0 1
0 0 0 336772 0 88732 0 0 0 0 0 36019 0 0 100 0 0
0 0 0 334084 0 88740 0 0 0 0 0 37540 19 12 67 0 2
0 1 0 334136 0 88284 0 0 0 44 0 35800 5 3 86 3 3
0 1 0 333452 0 88284 0 0 0 0 0 30293 0 1 92 7 0
0 0 0 331564 0 88288 0 0 0 0 0 30910 9 3 86 0 3
0 0 0 331580 0 88444 0 0 0 0 0 30251 4 1 94 0 1
0 0 0 331436 0 88448 0 0 0 0 0 30569 1 0 97 0 1
0 0 0 331416 0 88440 0 0 0 0 0 31997 5 3 87 0 5

 



zastanawia mnie natomiast to czy to normalne że swap jest 0 i czy może to miec wpływ na load? wydaje mi się że nei powinno co nie ?

 

free -m
total used free shared buffers cached
Mem: 512 229 282 0 0 85
-/+ buffers/cache: 144 367
Swap: 0 0 0

 



tu są staty podczas load ok 3

 

]#vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 330652 0 85352 0 0 55 29 0 13 6 2 91 0 0
0 2 0 330532 0 85400 0 0 36 8 0 31730 8 4 79 9 0
0 1 0 330604 0 85440 0 0 32 0 0 32264 31 10 47 9 3
0 1 0 330664 0 85600 0 0 152 4 0 29475 10 4 79 6 0
0 0 0 330636 0 85604 0 0 0 0 0 27136 10 5 80 3 2
0 0 0 330636 0 85604 0 0 0 0 0 26769 0 0 100 0 0
0 0 0 331148 0 85080 0 0 0 0 0 28664 13 5 82 0 0
0 1 0 331088 0 85156 0 0 68 0 0 28983 17 7 70 4 2
0 1 0 331060 0 85160 0 0 0 0 0 26776 2 1 93 4 0
0 1 0 331028 0 85184 0 0 16 4 0 26870 9 6 83 1 1
1 0 0 331144 0 85104 0 0 0 0 0 33818 16 5 79 0 0
0 1 0 331040 0 85188 0 0 64 8 0 29807 16 10 68 4 2
0 0 0 330988 0 85192 0 0 0 0 0 27607 3 3 93 3 0
0 0 0 330976 0 85196 0 0 0 36 0 27424 8 5 85 0 2
0 1 0 331008 0 85208 0 0 8 0 0 28195 5 1 91 3 0
0 0 0 331124 0 85144 0 0 0 8 0 26334 47 27 0 7 20
0 1 0 331072 0 85176 0 0 24 0 0 27420 12 6 76 4 2
0 0 0 331012 0 85180 0 0 0 32 0 25223 0 0 96 4 0
0 1 0 330968 0 85188 0 0 8 0 0 26313 6 1 92 1 0
0 0 0 330984 0 85164 0 0 0 0 0 26839 4 1 93 1 0
0 0 0 330992 0 85164 0 0 0 0 0 25394 1 0 99 0 0
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 330984 0 85172 0 0 0 0 0 26749 10 3 87 0 0
0 1 0 330972 0 85212 0 0 36 0 0 27686 6 3 83 6 2

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Te polecenia daj gdy load bedzie wiekszy. Jesli chodzi o swap, to na 99% korzystasz z vpsa z wirtualizacją openvz gdzie nie ma swap, jest ram tzw. burst.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dałem powyżej test podczas większego loadu, dodam jeszcze ze jak zrestartuje apache to wraca szybko do normy



właśnie mi w logach stuknęło żeby zwiększyć max client, proszę powiedz mi, czy osiągnięcie max client może powodować load?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pamiętaj, że na load average nie wpływa tylko ram i cpu, ale także I/O.

Pamiętaj też, że to, co u Ciebie jest zużyciem 20% cpu w rzeczywistości może być 100% dla serwera-matki. To jest VPS więc wszystko jest możliwe.

 

Zacząłbym od wyżej wspomnianego iotop'a podczas obciążenia. Możesz nawet zwykłym dd sprawdzić szybkość odczytu/zapisu na dysk, jeśli będzie zbyt mały to definitywnie dysk jest wąskim gardłem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

to jest podczas dużego obciążenia, żeby cię nie zamęczać to powiedz mi jeszcze tylko jak to io czytać o co chodzi?

 

#vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 1 0 304528 0 44528 0 0 55 29 0 106 6 2 91 0 0
0 2 0 302036 0 45380 0 0 856 0 0 28343 13 1 76 8 1
0 2 0 300136 0 45960 0 0 608 0 0 28036 15 1 75 9 0
1 2 0 292028 0 46856 0 0 832 164 0 29759 47 0 32 18 3
0 2 0 296932 0 48028 0 0 1172 8 0 31247 12 4 77 6 1
0 2 0 296380 0 48484 0 0 436 0 0 29616 4 0 82 12 1
0 2 0 295508 0 48864 0 0 372 0 0 30749 12 0 77 9 1
1 1 0 291680 0 50668 0 0 1840 0 0 29805 30 3 58 7 1
0 3 0 290628 0 51568 0 0 860 8 0 30335 8 0 81 12 0
0 2 0 288624 0 53100 0 0 1528 0 0 27706 10 7 72 10 1
0 2 0 284896 0 55868 0 0 2788 4 0 26040 5 3 82 10 0
0 2 0 282876 0 57308 0 0 1412 0 0 26082 5 1 82 11 0
0 2 0 281860 0 58024 0 0 768 0 0 25194 0 2 88 11 0
0 2 0 280044 0 59604 0 0 1504 36 0 26315 5 2 86 7 0
2 1 0 277028 0 61784 0 0 2164 0 0 30939 42 13 38 4 3
1 1 0 275868 0 63940 0 0 2152 0 0 27420 19 5 68 8 0
0 1 0 274912 0 64860 0 0 964 0 0 24501 11 1 81 5 1
0 2 0 271852 0 67160 0 0 2272 48 0 23035 25 3 63 8 0
0 1 0 316456 0 67856 0 0 672 64 0 22837 16 1 77 5 0

 



ps dopuki nie ustawiłem limitu w apache bardzo dużo procesów httpd się uruchamiało nawet z 300 i wtedy sie load robił

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

loadavg to średnia ilość procesów oczekująca w kolejce czy to na moc obliczeniową procesora czy też na odczyt/zapis danych na dysku.

 

I/O - input/output - odczyt/zapis na dysku.

 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ok rozumie. a odnośnie tej ilości procesów httpd. co może powodować ich tak dużą ilość i to najczęściej śpiących, podejrzewam że wejścia userów na stronę ale czy można jakoś prawdzić dokładnie które wejścia i gdzie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

słyszałem wiele pozytywów o ngix ale jestem lama w tych sprawach i boje się że coś spieprze. zresztą mam niestandardowo skonfugurowanego apache i podobno z rewritami w ngixie też problemy, więc lepiej nie.



chyba że ktoś odpłatnie mógłby mi dodać ngix żebym mógł przełączaś z jednego na drugie dla sprawdzenia to proszę o kontakt na gg:3070586

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No jak jedziesz na prefork apache'u mając 512 mb ram to nie dziwie się, że po 300 procesów się robi i loadavg leci w górę ;).

 

A i ograniczając workerów apache'a nie rozwiązujesz problemu, userzy będą dostawać error 503 z tego co pamiętam - resource temporarily unavailable.

 

Polecam poczytać o apache'u i (fast)cgi bądź przesiąść się na nginxa z php-fpm. Jeśli tak bardzo boisz się tych rewrite'ów to jest jeszcze np. lighttpd.

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

httpd -ls
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

 

takie coś mam. a jakbym zmienił na worker.c to może się poprawić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dodaje wpis żeby było dla kogoś kto będzie miał podobny problem

 

otóż przestraszyłem się jednak tego cgi i ngixa (pewnie niepotrzebnie) i postanowiłem zmienić z prefork.c na worker.c (nie zapomnieć zmienic ustawień workera w httpd.conf)

 

wydaje mi się że problem jest rozwiązany po reebocie i testowaniu w ab wychodzi tak:

194dfsdfsdf.jpg

 

można zauważyć że na początku załączałem zrzuty na których w task było bardzo dużo a thr mało, teraz jest na odwrót i jest ok

load podczas testu ab -n 100 -t 100 http://mojurl nie przekroczyl 1.1

 

zastanawia mnie fakt że wyskakuje prefork w komendzie

[root@darex]-[~]#httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

ale jest worker.c bo w htop widać nawet httpd.worker

 

Mam nadzieje że nei piszę na wyrost i to rzeczywiście będzie rozwiązaniem mojego problemu,

Jeszcze raz dzięki za naprowadzenie na rozwiązanie bo miesiąc dochodziłem do tego.

Pozdro:)

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na workera sobie możesz zmienić bez problemu, ale PHP w standardowej konfiguracji to Ci działać nie będzie. Mod_php nie jest kompatybilny z apache'owym workerem (tylko prefork) i m.in dlatego musi być wspomagany przez cgi bądź fastcgi. Sam sprawdź.

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dla odmiany, na tych zasobach sprzetowych zaproponowałbym g-wan`a idealnie stworzonego pod vpsy, ale moze stawic opor mniej doswiadczonym uzytkownikom wtedy napewno z pomoca przyjdzie ci odchudzony nginx

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ewidentnie jezdzisz po dysku, kazdy proces oczekujacy na IO dodaje 1 do loadu.

Jak masz kurczace sie zasoby to odpalanie kolejnych procesow apache'a nie ma sensu, lepiej ustawic ich mniej, wtedy przynajmniej nie bedziesz wchodzil w overload i wywalenie systemu.

 

Mozna postawic z przodu proxy, ktore troche skolejkuje ruch wchodzacy a na apache'u mniej procesow.

Mozesz tez pomyslec o szybszym IO..

 

pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

tiktalik no wiem że wchodzi na load ale co powoduje powstawanie tylu procesów po zmianie na worker.c jest dziwna sytuacja.

o każdej godzinie i 20 minucie dużo workerów przechodzi w dead z sleepingu.

próbowałem wyłączenie cronda, wirtualmina i dalej ta sama sytuacja, bardzo to dziwne że o tych samych porach co godzinę dzieje się to samo, wszystko jest dokładnie pokazane na załączonym filmiku

 

http://www.youtube.com/watch?v=81aiNAPC9kM

 

Udostępnij ten post


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

Nginx to idealne rozwiązanie bo używa minimalne ilości ramu i procesora przy bardzo dobrej wydajności.

Ale ta wirtualizacja jest za słaba na środowisko z bazą danych i php + jakiś webmin.

 

Wspomniany g-wan niestety jak pamiętam mimo lepszych osiągów miał większy nakład pamięci na proces i potrzebował trochę CPU.

Trochę zaskomplikowana zabawka jak na takie zastosowanie ;)

 

 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

co to znaczy "ta wizualizacja jest za słaba?" mam jeden mały serwis który tak jak napisałem powyżej przeż 58 w każdej godzinie pożera max 10% zasobów, i o każdej godzinie i 20 minucie przez 2 minuty jest większy load i występuje problem,

jasne mogę nawet po przesiadce na ngixa dokupić 4corowy procesor i z 8gb ramu ale gdzie sens i logika, problem jest w konfiguracji i chciałbym go znaleźć, gdybym nie chciał tego rozwiązać to nie zakłądałbym wątku tylko przeinstalował system i pewnie by hulało, więc proszę darować sobie wpisy "przesiądź się na ngix" albo na httplitte bo to nie ma związku z wątkiem i jest za przeproszeniem bez sensu,



to tak jakbym szukał auta wyścigowego, a doradzano by mi super terenówkę bo ma większą moc.

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ę


×