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 reloadzuż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_limitwielkości 512 MB, co wyjaśnia, że wysokie zużycie pamięci zmniejsza niską liczbę żądań, oraz max_execution_time120 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.
memcachedbiblioteki PHP . Na podstawie strony administratora memcache memcache.phpwidzimy tylko, że przydzieliliśmy 5GBpamięć memcache, z której 3.3GBsię korzysta. Byłoby wspaniale, gdybyś mógł nam pomóc tutaj dalej.
memcachedsam 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ą.