Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pamięć RAM
Forum PHP.pl > Forum > PHP
propage
Mam problem.
Na moim serwerze dostępne jest 1024 mb pamięci RAM, odwidzi n strony jest ok 2500 osób dziennie.
Co jakiś czas pojawia się komunikat o przekroczonej pamięci ram - try to allocate ....

Po wywołaniu na stronie internetowej memory_get_usage (na samym dole strony), funkcja zwraca ok 5 MB, czy to jest wartość powiedzmy wmiare standardowa?

Starałem się zoptymalizować skrypt pod kątem wykorzystywanej pamięci, to co zauważyłem i dziwi mnie najbardziej, że po zwykłym zainkludowaniu plików (klas php), zużycie pamięci rośnie ok 2MB, w momencie, gdy te pliki zajmują tylko 200 KB, dlaczego tak się dzieje?
lukaskolista
Cytat
zużycie pamięci rośnie ok 2MB, w momencie, gdy te pliki zajmują tylko 200 KB, dlaczego tak się dzieje?
Nigdy nie zaglebialem sie w ten temat, ale tez tak mam. Co do zuzycia 5MB RAMu to zalezy jaka to aplikacja, ale wedlug mnie to i tak duzo.
cojack
mam wycieki pamieci, moja aplikacja po wczytaniu pliku *.wsd zużywa 50mb więcej, omg co ja zrobiłem?

Ty kpisz czy o drogę pytasz? Weź pierw wyprofiluj skrypt (podpowiedź: xdebug) i zobacz co się dzieje.
gothye
5MB zajęte przez aplikacje to dużo ? Wg mnie to jest średnia wartość , niektóre nasze aplikacje w ZF lub Kohana 3.x pożerają po 10-12mb .
Zwiększ w php.ini wartośc memory_limit
Uriziel01
Cytat(gothye @ 7.11.2011, 11:15:58 ) *
5MB zajęte przez aplikacje to dużo ? Wg mnie to jest średnia wartość , niektóre nasze aplikacje w ZF lub Kohana 3.x pożerają po 10-12mb .
Zwiększ w php.ini wartośc memory_limit

Jedyne co mogę powiedzieć o tej 'poradzie' to że jest ona na takim poziomie jak odpowiedzi w stylu 'użyj @' na pytanie co zrobić gdy parser wyrzucą 'WARNING: xxxxx', podczas gdy supresja błędów naprawdę jest złem wcielonym (choć nie zawsze), to samo z 'zwiększ limit' closedeyes.gif
by_ikar
Widzisz, to że masz 1gb ram, nie znaczy że tylko php z niego będzie korzystać. Na sam start system trochę ssie, w zależności od tego jaki to system i jakich pakietów używasz (domyślam się że linuch), dochodzi jeszcze serwer (domyślam się że apache) i tutaj też zależy w jakim trybie masz go uruchomionego, najwolniejszy i najbardziej wpierdzielający pamięć tryb to cgi.. Nie mniej, podaj cały komunikat błędu, bo wróżbiarstwem tutaj się raczej nikt nie zajmuje.

5mb to nie jest dużo, wordpress chyba z 10mb żre, a symfony 2 bez akceleratora potrafi na "hello world" również zjeść 10mb lub coś koło tego.
propage
"Fatal error: Out of memory (allocated 6291456) (tried to allocate 77824 bytes) in ..."

Zakładając że mamy 1 GB tylko na php (pomijam apathe itd.. ) i średniej wielkości przeciętny sklep internetowy, ile odwiedzin dziennie powinien wytrzymać serwer (jeśli chodzi o pamięć) ?

Wiem, że cieżko oszacować, więc możemy założyć bazę 3.000 produktów i standardowy skrypt typu: osCommerce, presta, magento, jeśli ktoś wie jakiego rzędu będzie to liczba: 1.000/2.000/5.000/10.0000/20.0000?

__________________

Znalazłem taki test http://www.cms.rk.edu.pl/w/p/cmsxdebugbenchmark/
Tak jak wspomniałem wcześniej najwięcej pamięci (3mb z 5 mb) jest pochłaniane w przez zwykłe include() zewnętrznych klas php (bez żadnych dodatkowych operacji), więc jak to się dzieje że phpbb uzyskał wynik maksymalnego zużycia pamięci na poziomie zaledwie 0,74209595, jest tam na pewno dużo więcej inkludowanych plików o łącznej wadze większej niż w moim skrypcie.
wNogachSpisz
Cytat(propage @ 6.11.2011, 21:33:22 ) *
memory_get_usage (na samym dole strony), funkcja zwraca ok 5 MB

A ile zwraca na samej górze?
propage
na samej górze zwróci 0.

Po wczytani klas zwróci 3mb.
by_ikar
Wyskakuje ci to na każdej stronie, czy tylko na konkretnych? Czemu nie podałeś calutkiego komunikatu błędu? Brakuje jeszcze pliku i numeru linii Jak możesz to pokaż albo cały ten plik, albo kilka wierszy poprzedzających błąd i kilka wierszy za błędem. Kurdę nigdy tego nie zrozumiem, ludzie liczą na pomoc, mówią "nie działa" a ty stań się nagle wróżbitą, zaparz sobie kawki żeby powróżyć z fusów i znajdź rozwiązanie. Reasumując:

Co robisz kiedy wyskakuje ci taki błąd? (może wrzucasz 60 megowy obrazek i go zmniejszasz za pomocą GD..)
Kod w którym błąd występuje?
Jaki to hosting?
Jaka wersja php? Wcześniej php domyślnie miało 16mb memory limit, obecnie ma 128mb, więc nie wiem czy ci proponować ustawić memory limit bo nie wiem jaką masz wersję pechapa.

propage
1. nie podałem kodu i numeru linki ponieważ za każdym razem, gdy wyskoczy komunikat pojawia się w nim inny plik i inny numer linii - porostu nagle kończy się Pamięć (nie jest tak że akurat konkrety skrypt wymaga wyjątkowo dużo Pamięci). "Fatal error: Out of memory (allocated 1310720) (tried to allocate 77824 bytes) in ... ", co ciekawe na monitorze używania RAM dla serwera nigdy nie przekroczyliśmy 1.1 GB, więc teoretycznie nie powinien pojawić się komunikat o tym, że nie można "allocate 77 KB"??.
2. hosting VPS 1256 MB
3. PHP Version 5.3.3-7+squeeze3, standardowo ustawiony mamy limit 256 MB per skrypt.
wNogachSpisz
Cytat(propage @ 8.11.2011, 09:36:38 ) *
na samej górze zwróci 0.

Sprawdziłeś czy zgadujesz?
propage
sprawdziłem, zaokrągliłem do "0", na początku skryptu jest dokładnie 84KB.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.