Instalacja APC w Windows
Wprowadzenie
APC (Alternative PHP Cache) jest systemem cache'owania kodu operacyjnego PHP. Przechowuje on strony PHP w pamięci operacyjnej, zmniejszając tym samym aktywność dysku twardego. Ma to duże znaczenie dla wydajności Moodle'a. Powinieneś być w stanie osiągnąć 50%-owy wzrost przepustowości systemu i 50% mniejsze użycie procecsora.
Ten przewodnik opisuje instalację APC na serwerze windowsowym. Instrukcje te zostały przetestowane na Windows 2003 Server. Powinny także działać z Windowsem XP, jeśli używasz takiego do celów testowych.
Instalacja w Windows Server
Ostrzeżenie: Nie możesz zainstalować APC i Zend Optimizera na tym samym serwerze. Musisz wybrać jednego z nich.
Postępuj zgodnei z poniższymi instrukcjami, aby zainstalować APC.
Pobierz właściwą wersję
Pobierz plik binarny Windows dla wersji PHP, jaką masz zainstalowaną z http://pecl4win.php.net/ext.php/php_apc.dll. Zapisz ten plik do katalogu z rozszerzeniami PHP, którym domyślnie jest c:\php\ext.
Uwaga: Upewnij się, że wybrałeś wersję prawidłową dla twojej wersji (gałęzi) PHP.
Włącz rozszerzenie APC w pliku PHP.INI
Wyedytuj plik php.ini, dodając poniższą linię do sekcji rozszerzeń (extensions):
extension = php_apc.dll
Sprawdź czy to działa przez zrestartowanie swojego serwera i przejrzenie tego, co zwraca phpinfo. Możesz to zrobić z poziomu panelu administracyjnego Moodle'a lub przez użycie pliku tekstowego, zawierającego jedną linię:
<?php phpinfo(); ?>
Sprawdź ilość dostępnej pamięci
Aby sprawdzić, ile pamięci jest dostępnej dla APC:
- Uruchom WordPada i utwórz plik apcmeminfo.php.
- Skopiuj i wklej do niego tą linię:
<?php print_r(apc_sma_info()); ?>
- Zapisz ten plik do moodle/admin/apcmeminfo.php.
- Otwórz w przeglądarce http://mymoodle.com/moodle/admin/apcmeminfo.php.
- Odczytaj wartość avai_mem (w bajtach):
... [avail_mem] => 31447368 ...
Ilość całej pamięci używanej przez cache wyraża się poniższym wzorem:
całkowita_pamięć = apc.shm_segments * apc.shm_size
W tym przykładzie, dostępna pamięć wynosi mniej więcej 32 MB. Przeważnie jeśli potrzebujemy więcej niż 32 MB cache'u, powinniśmy zwiększyć ilość używanych przez APC segmentów. Jednakże może to powodować zawieszenia serwera, tak więc lepiej zamiast tego jest zwiększyć rozmiar segmentu.
Podczas ustawiania wielkości całej dostępnej pamięci, zacznij od najniższej wartości, przy której Moodle może działać (64MB). Ta ilość może nie być wystarczająca, jeśli posiadasz zainstalowane dodatkowe moduły i bloki, więc monitoruj cache regularnie przez pierwsze dwa tygodnie działania serwera. Przeczytaj sekcje o monitorowaniu poniżej i stopniowo zwiększaj rozmiar cache'u.
Dopasowywanie ustawień APC pod Moodle
Domyślne ustawienia APC są następujące:
apc.cache_by_default = On apc.enable_cli = Off apc.enabled = On apc.file_update_protection = 2 apc.filters = apc.gc_ttl = 3600 apc.include_once_override = Off apc.max_file_size = 1M apc.num_files_hint = 1000 apc.optimization = Off apc.report_autofilter = Off apc.shm_segments = 1 apc.shm_size = 30 apc.slam_defense = 0 apc.stat = On apc.ttl = 0 apc.user_entries_hint = 100 apc.user_ttl = 0 apc.write_lock = On
Wyczerpujące wyjaśnienie tych ustawień znajdziesz na http://www.php.net/apc.
Przy typowej instalacji Moodle'a wymagane są pewne zmiany:
- apc.shm_size (rozmiar cache'u) powinien być początkowo ustawiony na 64MB.
- apc.shm_segments powinien być ustawiony na 1. Daje to całkowity rozmiar cache'u równy 64MB (początkowo).
- apc.stat (statowanie plików) powinno być ustawione na 1. W przeciwnym wypadku będą wyświetlane puste strony.
- apc.max_file_size powinno być zwiększone to 10MB.
Aby tymczasowo wyłączyć APC ustaw apc.enabled = 0 w PHP.INI i zrestartuj serwer WWW.
Działąjącą sekcję APC pliku PHP.INI przedstawiono poniżej. Możesz ją skopiować i wkleić na końcu pliku PHP.INI:
[APC] apc.enabled = 1 apc.shm_segments = 1 apc.shm_size = 64 apc.max_file_size = 10M apc.stat=1
Pozostałe ustawienia mogą być zostawione domyślnie.
Ustaw domyślny katalog
APC potrzebuje domyślnego katalogu, w którym może przechowywać swoje pliki. Spróbuje je zapisać w katalogu temp Windowsa, więc zadbaj o to, by C:\WINDOWS\TEMP był dostępny do zapisu dla użytkownika serwera (dla IIS jest to IUSR_nazwa-maszyny, przy Apache nie jest wymagana zmiana żadnych uprawnień).
Monitoring i dostosowywanie cache'u
Źródła APC zawierają skrypt PHP, który jest użyteczny podczas monitorowania i zwiększania wydajności twojego cache'u.
- Pobierz plik monitoringu APC z http://pecl.php.net/package/apc i rozpakuj zawartość.
- Poszukaj pliku apc.php. Wyświetla on informacje monitorujące APC.
- Zapisz plik apc.php do katalogu /moodle/admin na twoim serwerze.
Uwaga: Kiedy już zakończysz z sukcesem instalację APC, przenieś ten plik do obszaru chronionego hasłem, aby zwiększyć bezpieczeństwo.
- Sprawdź, czy ten skrypt działa, kierując przeglądarkę na http://mymoodle.com/moodle/admin/apc.php (czy też innej lokalizacji apc.php na twoim serwerze). Powinieneś zobaczyć graficzną reprezentację twojego cache'u wraz z pewnymi danymi statystycznymi z lewej strony.
Aby dostosować cache, spójrz na sekcje General Cache Information i Detailed Memory Usage and Fragmentation. Obserwuj wskaźniki Cache Full Count (licznik zajętości cache'u) oraz Fragmentation % (stopień fragmentacji w procentach).
- Jeśli Cache Full Count > 0, znaczy to, że cache zapełnia się i brakuje zaalokowanej pamięci. Aby rozwiązać ten prblem zwiększ ilość alokowanej pamięci (apc.shm_size).
- Wskaźnik Fragmentation % powinien pokazywać 0%, lecz może się zwiększać od czasu do czasu, szczególnie jeśli cache się przepełnia.
Sprawdzanie wydajności
By potwierdzić poprawę wydajności, zrób poniższe:
- Wyłącz cache w PHP.INI i zrestartuj serwer.
- Uruchom ab.exe (w katalogu bin Apache'a) z wiersza poleceń, tak jak poniżej:
c:\apache2\bin>ab.exe -n 50 -c 1 -d http://mymoodle.com/moodle/index.php
- Zwróć uwagę na wartości szybkości transferu i czasu na żądanie.
- Włącz cache w PHP.INI i zrestartuj serwer WWW.
- Wczytaj stronę http://mymoodle.com/moodle/index.php, aby została ona zapamiętana w cache.
- Uruchom ab.exe ponownie i porównaj poprzednio odczytane wartości z bieżącymi. Powinieneś odnotować 50%-owe polepszenie obu tych wartości.
Deinstalacja APC
Aby odinstalować APC, dodaj średnik na początku linii, w której ładujesz APC w pliku PHP.INI:
;extension = php_apc.dll
Pamiętaj, aby zrestartować twój serwer.