Prowadzimy ciężką stronę internetową Drupal, która wykonuje modelowanie finansowe. Wydaje się, że mamy do czynienia z pewnym wyciekiem pamięci, biorąc pod uwagę fakt, że z czasem pamięć używana przez apache rośnie, a liczba procesów apache pozostaje stabilna:
Wiemy, że problem z pamięcią pochodzi z Apache / PHP, ponieważ za każdym razem, gdy wydajemy, /etc/init.d/httpd reload
zużycie pamięci spada (patrz powyższy zrzut ekranu i poniżej wyjścia CLI):
Przed httpd przeładuj
$ za darmo Łącznie wykorzystane wolne buforowane bufory współdzielone Mem: 49447692 45926468 3521224 0 191100 22609728 - / + bufory / pamięć podręczna: 23125640 26322052 Zamiana: 2097144 536552 1560592
Po httpd przeładuj
$ za darmo Łącznie wykorzystane wolne buforowane bufory współdzielone Mem: 49447692 28905752 20541940 0 191360 22598428 - / + bufory / pamięć podręczna: 6115964 43331728 Zamiana: 2097144 536552 1560592
Każdemu wątkowi Apache przypisany jest PHP o memory_limit
wielkości 512 MB, co wyjaśnia, że wysokie zużycie pamięci zmniejsza niską liczbę żądań, oraz max_execution_time
120 sekund, które powinny zakończyć wątki, których wykonanie trwa dłużej, a zatem powinny zapobiec ciągłemu wzrostowi wykorzystania pamięci. widzenie.
P: Jak możemy zbadać, co powoduje wyciek pamięci?
Idealnie szukam kroków rozwiązywania problemów, które mogę wykonać w systemie bez przeszkadzania zespołowi programistów.
Dodatkowe informacje:
OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6
Do Twojej wiadomości jesteśmy świadomi problemu wymiany, który badamy osobno i nie ma nic wspólnego z wyciekiem pamięci, który zaobserwowaliśmy przed rozpoczęciem wymiany.
memcached
biblioteki PHP . Na podstawie strony administratora memcache memcache.php
widzimy tylko, że przydzieliliśmy 5GB
pamięć memcache, z której 3.3GB
się korzysta. Byłoby wspaniale, gdybyś mógł nam pomóc tutaj dalej.
memcached
sam demon prawdopodobnie jest w porządku. Jest to biblioteka memcache PHP, która może, ale nie musi, przeciekać pamięć (i tym samym zwiększać wykorzystanie pamięci przez Apache). Mój problem pojawił się około 1-2 lata temu, więc potem wszystko mogło zostać naprawione. W każdym razie, jeśli memcached nie jest dla Ciebie obowiązkowy, spróbuj go na chwilę wyłączyć i sprawdź, czy użycie pamięci Apache nadal rośnie.
httpd
, użycie pamięci będzie rosło, a pudełko ostatecznie ulegnie awarii z niektórymi komunikatami o braku jądra pamięci. Wydajności są dobre (dopóki zużycie pamięci nie zbliża się do limitu pamięci). Zignoruj problem z zamianą.