Wskazówki dotyczące wydajności serwera LAMP [zamknięte]

11

Jakie wskazówki dotyczące wydajności mogą być oferowane osobie prowadzącej serwer LAMP?

W przypadku, gdy coś jest specyficzne dla dystrybucji, wybieram Debiana.

Unkwntech
źródło

Odpowiedzi:

26

To naprawdę zależy od obciążenia pracą.

  • dla części L.

    • mieć dużo pamięci,
    • jeśli możesz przekroczyć 4 GB, wybierz 64bit.
    • dla partycji, na których twoja zawartość, logi i dane MySQL są używane opcje montowania: noatime, nodiratime.
    • używaj oddzielnych fizycznych dysków / zestawów rajdowych, najlepiej przechowuj dane SQL, logi, treści, które podajesz - każdy na osobnym wrzecionie.
  • dla części A stosu - może chcesz całkowicie zastąpić ją nginx lub lighthttpd , a może po prostu zostaw Apache dla dynamicznej zawartości i mieć oddzielny serwer (taki jak te dwa lub mathopd ) dla statycznej zawartości. Zajrzyj tutaj, aby uzyskać więcej opcji. Jeśli zamierzasz uruchomić zarówno Apache, jak i inny serwer w tym samym urządzeniu, przydatny będzie drugi adres IP. Aby zmniejszyć opóźnienie dla użytkownika końcowego, użyj http / 1.1 z Keep-Alive. Rozważ użycie CDN dla zawartości statycznej.

  • dla części M lampy - spójrz na mysqlperformanceblog . ze szczytu mojej głowy:

    • rejestruj wolne zapytania,
    • dać wystarczającą pamięć,
    • rozważ użycie innodb.
    • jeśli masz dużo tekstu do przeszukania - użyj sfinksa i masz zadanie wsadowe, które odbudowuje indeks.
    • rozważ zabijanie zapytań trwających dłużej niż XYZ sekund. Lepiej zdenerwować 1% użytkowników niż sprowadzić całą witrynę w godzinach szczytu. Ale to naprawdę zależy od tego, czy przetwarzasz transakcje gotówkowe lub wyświetlasz ładne zdjęcia.
    • jeśli to możliwe, używaj memcached, aby buforować wynik „droższych” zapytań SQL. Pamiętaj, aby unieważnić pamięć podręczną podczas zmiany zawartości SQL. Z drugiej strony mam dość niewiele stron, w których wszystkie dane wygodnie mieszczą się w pamięci, a do tego MySQL płonie szybko i nie potrzeba dodatkowej pamięci podręcznej.
  • dla P.

    • ustaw limit czasu wykonywania skryptów.
    • rozważ użycie pamięci podręcznej akceleratora PHP / opcodu. Byłem całkiem zadowolony z xcache , ale nie używam go teraz.
    • jeśli masz intensywne przetwarzanie procesora - buforuj wyniki i przechowuj je w SQL lub memcached

Nie jest to naprawdę wskazówka dotycząca wydajności, ale rób kopie zapasowe poza siedzibą. Naprawdę.

pQd
źródło
1
jeśli mogę to dodać, ostatnio pisałem na blogu o bezpiecznych kopiach zapasowych za pomocą strategii push i pull za pośrednictwem Amazon S3. nie są opłacalne dla danych bankowych, ale wszystko, co zaufasz amzonowi, powinno być w porządku. logaholic.de/2009/05/21/…
Karsten
rzeczywiście zauważyłem ten post na blogu, zanim skomentowałeś; -]. i tak miło. zawsze możesz zaszyfrować kopię zapasową, aby była bardziej bezpieczna.
pQd
3

Naprawdę sugeruję rozdzielenie MySQL i Apache / PHP na dwóch różnych maszynach.

Na przykład miałem jedną maszynę (C2D E6600), która zawsze zwiększała się do 2,0 i powyżej średniej obciążenia. Umieściłem MySQL na drugiej maszynie (P4C 3Ghz), a następnie obie średnie obciążenia nie przekraczały 0,2-0,3. Więc przeszedłem z bardzo powolnej witryny na szybką, z dwoma serwerami o dużym marginesie wydajności.

Antoine Benkemoun
źródło
Słuszna uwaga. Mogę jedynie spekulować, że twoim wąskim gardłem może być responsywność podsystemu IO. może wtedy rozdzielenie danych na dwóch różnych dyskach / posiadanie drobnego kontrolera dysku również załatwi sprawę. w każdym razie więcej pamięci, a więcej cpus jest zawsze dobre, ale wtedy dostajesz więcej możliwych punktów awarii.
pQd
Cóż, nie jestem pewien, czy były to dyskowe operacje we / wy, ponieważ większość (powiedzmy 90%) trafień SQL była buforowana. Myślałem o przełącznikach kontekstu procesora, ale nie wiem, czy to rzeczywiście może odgrywać znaczącą rolę.
Antoine Benkemoun
1

W przypadku części P można rozważyć buforowanie opcode za pomocą np . APC . Można również rozważyć mod_fastcgi z php zamiast domyślnego mod_php.

Karsten
źródło
Naprawdę lubię eAccelerator. Zapewnia najlepszą wydajność moich stron.
TheHippo