Mam stronę magento. Nie ma żadnych użytkowników (maksymalnie 2-3 naraz).
Nasz serwer to: CPU: 2000 MHz RAM: 2048 Mb HDD: 50000 Mb.
Zainstalowałem ZendServerCE (apc + memcached + Zend Optimizer + Zend Data Cache). Wyłączyłem memcached, ponieważ strona ładowała się znacznie gorzej. W konsoli administracyjnej ustawiam strukturę typu płaskiego, ponownie indeksowane i buforowane dane.
Mam więc apc + Zend Optimizer + Zend Data Cache .
Pierwszym problemem jest sprawdzenie, jak działa środowisko uruchomieniowe. Wywołanie start_session () zajmuje około 500-700 ms. Wydaje się, że nie jest to dobry wynik. Dlaczego tak długo, nie wiem.
Przeczytałem ten: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size i wymyśliłem optymalne opcje dla mojego serwera.
Na godzinę:
Key_read_requests = 8887
Key_reads = 252
Key_write_request = 187
Key_writes = 146
Widzisz, że 252/8887> 0,01, ale nie za dużo. To optymalna wartość, jaką kiedykolwiek dostałem. Inne wyniki rozpoczęto od> 6.
Oto my.cnf:
key_buffer = 48M
myisam_sort_buffer = 2M
sort_buffer = 2M
read_buffer_size = 2M
join_buffer = 2M
read_rnd_buffer = 2M
max_allowed_packet = 128M
thread_stack = 192K
thread_cache_size = 16
query_cache_type = 1
myisam-recover = BACKUP
max_connections = 50
table_cache = 256
#thread_concurrency = 10
query_cache_limit = 8M
query_cache_size = 98M
3. Odczytany z jakiegoś powodu nie był dobry. Wyłączyłem to. Ale pamięć podręczna danych Zend i optymalizator Zend nadal działają.
4 APC wydaje się poprawne. Ładowanie kontrolera zajmuje po raz pierwszy 3-4 sekundy (ustawiam tam die (), aby to sprawdzić) i po raz pierwszy zajmuje to 1 - 1,3 sekundy.
5 Po kilku minutach zrestartowałem mysql i uzyskałem dobry wynik. Strony ładowały się od 1,5 do 2,5 sekundy. Ale teraz (po kilku godzinach) zajmuje to 6–10 sekund. Nie mogę znaleźć przyczyny.
Widzisz tutaj jakąś niepoprawną konfigurację? Może mój serwer nie nadaje się do Magento?
AKTUALIZACJA 1: obecnie około 600 kategorii i 1000 produktów oraz około 20000 kategorii (dla różnych sklepów internetowych) i 1500-3000 produktów w przyszłości.
Nie ma wielu atrybutów.
AKTUALIZACJA 2 Zorientowałem się, że konsola ssh działa zbyt wolno. Ponownie uruchomiłem serwer i teraz działa szybko. oznacza to, że mam problem z pamięcią RAM. Nie ma wystarczającej ilości miejsca.
Jest to stan początkowy bez apache:
total used free shared buffers cached
Mem: 2048 600 1447
AKTUALIZACJA 3 Mam to. Teraz jest ładowany przez 0,5-1,5 sek
Oto konfiguracja: mysql
[mysqld]
key_buffer_size = 256M
tmp_table_size = 32M
max_heap_table_size = 32M
myisam_sort_buffer = 4M
sort_buffer = 4M
read_buffer_size = 4M
join_buffer = 4M
read_rnd_buffer = 4M
max_allowed_packet = 64M
thread_stack = 192K
thread_cache_size = 16
query_cache_type = 1
myisam-recover = BACKUP
max_connections = 20
table_cache = 1024
innodb_buffer_pool_size = 128M
query_cache_limit = 24M
query_cache_size = 256M
php
[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000
Wszystko działa idealnie, ale pozostaje jedno pytanie. APC pokazuje mi tę statystykę:
Dlaczego uderza tak małe? Jakieś pomysły?
xhprof
i spróbowałem uzyskać wizualizację tego, co zajmuje najwięcej czasu. Czy jest to serwer produkcyjny pod obciążeniem, czy tylko do testowania?