"Wycieki" pamięci - czy to może być przyczyna?

0

Od dwóch dni widać po wykresach, że aplikacja bierze więcej pamięci i system zabija procesy, a raz nawet wszystko siadło. Po aplikacji klika ~ 1000 użytkowników.

Wydaje mi się, że ten fragment kodu może być przyczyną (jedyny sensowny kandydat z tego co weszło na produkcję, z uwagi na rekurencyjne iteracje po tablicy i przestawianie elementów):

$wsof = $webcare->lookupService('RemoteCalendar');
$response = json_decode(json_encode($wsof->call_getAdvisors()), true);
$wsof->save();

$response['advisors'] = array();

// for($i = 0; $i < 10000; $i++) {
//     $response['advisors'][] = array('branch' => array('name' => 'test'));
// }

array_walk($response['advisors'], function(&$el) {
    $el['branch_name'] = $el['branch']['name'];
    unset($el['branch']);
});

$response['advisors'] = ArrayAggregator::aggregate(
    $response['advisors'], 'branch_name'
);

Klasa ArrayAggregator jest tu: http://4programmers.net/Pastebin/5676

Spróbowałem wykonać ab -c 100 -n 1000 http://localhost:8080/detail.php\?getAdvisors ale nie bardzo wiem jak to zinterpretowac (zakomentowany fragment kodu wyżej był używany zamiast wyniku zwracanego przez ws). Wynik w zał.
Jak w tym czasie odpaliłem htop to od cholery było tam /usr/sbin/apache2 -k start i pierwsze 8-10 żarło po 10 CPU%

Czy takie operacje na tablicy jak wyżej mogą być przyczyną gdy klika po aplikacji 1000 userów, czy powinienem szukać dalej?

1

Co ty na to, żeby użyć xdebug i po prostu sprawdzić ile i gdzie pamięci w pojedynczym zapytaniu używa aplikacja?

Sam kod nie wygląda źle, dużo zależy od danych. Szczegółowo nie analizowałem tego Aggregatora --- napisz sobie testy do tego i tylko na nim mierz użycie pamięci - jeżeli podejrzewasz (albo zobaczysz w xdebugu), że tu jest problem. Potem przepisz tak, by problemu nie było.

Niemniej - patrząc na takie cuda: json_decode(json_encode($wsof->call_getAdvisors()), true); mam wrażenie, że autor nie powinien wypuszczać niczego publicznie. Widać tu niechęć do obiektów, bardzo popularną u początkujących.

Statystyka w załączniku to ogólnik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1