Serwery WWW a duży ruch na stronie internetowej

Duży ruch w serwisie powinien nas oczywiście cieszyć, ale także postawić w stan podwyższonej gotowości. Obsługa olbrzymiej ilości zapytań wymaga odpowiednich zasobów sprzętowych, ale nie można na tym poprzestać. Podstawowe znaczenie ma działanie serwera WWW, który bezpośrednio odpowiada za prezentowanie witryny użytkownikom.

Co to jest serwer WWW?

Serwer WWW (serwer webowy) oznacza oprogramowanie, które jest odpowiedzialne za przechowywanie, przetwarzanie i dostarczanie użytkownikom treści stron internetowych. Na żądanie wysyłane z przeglądarki użytkownika (gdy wpisuje w niej adres URL), a następnie serwera DNS (konwertującego URL na adres IP), serwer webowy prezentuje stroną użytkownikowi w jego przeglądarce. 

Strony internetowe mogą mieć postać statycznych dokumentów lub być generowane dynamicznie. W takim przypadku zadaniem serwera WWW jest uruchamianie odpowiedniego oprogramowania, jak PHP czy Java.

Protokołem wykorzystywanym w komunikacji jest HTTP (Hypertext Transfer Protocol) oraz szyfrowany HTTPS. W ten sposób przekazywane są komponenty dokumentów HTML, obrazy czy arkusze stylów. Proces opiera się na protokołach sieciowych IP i TCP. Za obsługę poczty elektronicznej odpowiada za to protokół SMTP, a FTP służy do przesyłania i udostępniania plików.

Oprogramowanie serwerów WWW

Wybór oprogramowania serwera WWW jest zależny od systemu operacyjnego serwerów. Dla większości z nich będzie to wydajny i niskoawaryjny Linux. Stosowany, aczkolwiek rzadziej, jest także system Windows Server, jedyny, który obsługuje oprogramowanie Microsoft IIS..

Wg W3Techs najpopularniejsze oprogramowanie serwerów WWW to obecnie (stan na wrzesień 2020 r.) Apache HTTP Server, który ma 35,6% udziału w rynku oraz Nginx, z 32,5% udziałem. 

Oba rozwiązania funkcjonują w modelu open source, a zatem są bezpłatne, mają otwarty kod i stale rozwija je rozbudowana społeczność użytkowników. Ponadto na licznych forach znajdziemy odpowiedzi na pytania, które mogą się pojawić w trakcie korzystania z oprogramowania a w artykułach blogowych czy filmach na YouTube zapoznamy się z turorialami. 

Czym się cechują Nginx i Apache oraz jakie są różnice między nimi?

Apache HTTP Server

Apache HTTP Server możemy zainstalować na każdym z popularnych systemów operacyjnych, czyli Unix, Linux czy Windows, a także tych bardziej niszowych, jak NetWare, czy OpenVMS. 

Oprogramowanie pozwala na zarządzanie bazami danych SQL i wykorzystywanie go z interpreterami języka PHP, na którym opierają się nowoczesne strony internetowe.

Zaletą Apache’a jest wysoka konfigurowalność, ponieważ jego struktura opiera się na modułach, odpowiedzialnych za konkretne funkcje. Dotyczą one na przykład bezpieczeństwa, buforowania, adresów URL czy uwierzytelniania haseł. Możliwe jest również tworzenie własnych konfiguracji serwera.

Apache potrafi także obsłużyć duży ruch, nie wymagając przy tym od serwerów wyśrubowanych parametrów. Jest to również oprogramowanie skalowalne, gdyż łatwo przyporządkować do niego kolejne serwery. Wspiera przy tym technologię zabezpieczającą SSL.

Z Apache korzystają m.in. takie firmy jak Adobe, LinkedIn, Facebook, eBay czy IBM. 

Nginx

Nginx (wymawiane jako „engine-ex”) to oprogramowanie opierające się na architekturze asynchronicznej i sterowane zdarzeniami. W związku z tym podobne żądania mogą być zarządzane w ramach jednego procesu roboczego. Konkurencyjne rozwiązania natomiast tworzą dla każdego zdarzenia osobny wątek, co owocuje większą ilością procesów. 

Dzięki temu Nginx może pochwalić się wysoką niezawodnością, szybkością i skalowalnością. Doskonale nadaje się zatem do obsługi witryn o dużym ruchu, jak wyszukiwarki, e-commerce czy rozwiązania cloud computing. 

Nginx potrafi być wydajniejszy od Apache, pozwalając na obsługę co najmniej 10 razy więcej żądań. Szybciej dostarcza dane, szczególnie pliki statyczne (w czym potrafi być nawet dwukrotnie wydajniejszy od konkurenta, zużywając równocześnie mniej pamięci). Oba rozwiązania wykazują jednak podobną prędkość przy dostarczaniu plików dynamicznych

Z Nginx korzystają m.in. Google, Netflix, WordPress.com czy NASA.

Inne częściej używane oprogramowanie tego typu to: Cloudflare Server (14,1% udziału w rynku), Microsoft-IIS (8,1%) czy LiteSpeed (6,5%).

Konfiguracja i monitorowanie serwera WWW

Na serwer WWW składa się kilka usług. Każda z nich ma znaczenie dla jego wydajności i wymaga optymalnej konfiguracji oraz monitorowania, mając na uwadze czas ładowania się strony.

System operacyjny

W serwerach webowych najczęściej stosowany jest system Linux oraz rzadziej Windows Server. 

Linux jest oprogramowaniem dostępnym w modelu open source, a zatem bezpłatnym i o otwartym kodzie. Zmniejsza to wyraźnie koszty konfiguracji serwera WWW. System uznawany jest za niezawodny, stabilny i wydajny, co doskonale predestynuje go do tego typu zastosowań. Powiązanych z nim jest także wiele aplikacji, np. dotyczących konkretnych systemów CMS (jak WordPress) czy np. forów dyskusyjnych.

Istotny jest także fakt, że Linux ma niższe wymagania sprzętowe w porównaniu z Windows Server oraz uważany jest za bezpieczniejszy, ponieważ rzadko staje się celem ataków hakerskich.

System operacyjny współpracuje z najbardziej popularnym oprogramowaniem dla serwerów WWW, jak Apache i Nginx. Obsługuje języki Perl, PHP, Python i Ruby, oraz bazy danych MySQL czy MariaDB.

Windows Server to z kolei oprogramowanie płatne, ale dzięki temu administratorzy otrzymują dostęp do pomocy technicznej oraz aktualizacji. System oddaje nam do dyspozycji ponadto platformę służącą do tworzenia stron internetowych ASP.NET oraz oprogramowanie SharePoint i Exchange. Przekłada się to na większą popularność Windows Server w środowiskach biznesowych. Ponadto w przypadku zaistnienia błędów możliwe jest wykorzystanie funkcji przywracania systemu. 

Jako wady Windows Server wskazywane są problemy z bezpieczeństwem, związane z błędami dotyczącymi sterowników czy podatności na ataki za pomocą złośliwego oprogramowania. Minusem systemu są także wysokie koszty licencji.

Na serwerze z systemem Windows, można uruchomić oprogramowanie Apache HTTP Server jak i Nginx. Jedynie Windows Server obsługuje za to Microsoft-IIS.

Monitorując system operacyjny powinniśmy zwrócić uwagę na takie parametry, jak stopień użycia procesora, pamięci RAM czy miejsca na dysku. Jeżeli przy średnim 5-minutowym użytkowaniu parametry te przekraczają 80%, powinno nas to zaalarmować. Być może jest to sygnał do zwiększenia zasobów systemu.

Standardowo aplikacja po starcie powinna rezerwować ok. 50% pamięci RAM systemu. Warto ustalić także odpowiednie limity, aby uniknąć jego przeciążenia.

Silnik bazodanowy

Dane po tym, jak trafią na serwer, po przetworzeniu przez np. Apache czy Nginx, podlegają konwersji do formatu, jaki obsługuje dany silnik bazodanowy, np. MySQL czy MariaDB.

Silnik zaciąga dane do hurtowni danych, która jest podstawowym elementem silnika danych, przekazując żądania bazy do serwera aplikacji. Serwer aplikacji następnie przetwarza i przesyła żądania do serwera WWW, przekształcającego je w treść prezentowaną użytkownikowi. 

Wydajność funkcjonowania bazy danych ma kluczowe znaczenie dla czasu ładowania się serwisu. Dlatego też należy stale monitorować jej parametry, aby ewentualnie dokonywać optymalizacji. W szczególności dotyczy to szybkości raportowanych kwerend i ilości dostępnej dla bazy pamięci.

PHP i php-fpm

Aby serwer mógł wyświetlać strony napisane w PHP, musi zostać na nim zainstalowana technologia pozwalająca na obsługę tego języka (interpreter). Ważna jest przy tym możliwość przetwarzania najbardziej aktualnej wersji PHP, dzięki czemu nie będą pojawiały się problemy z wyświetlaniem nowoczesnych witryn.

Do dyspozycji mamy interpretery PHP lub PHP-FPM. Technologia PHP-FPM pozwala na przyspieszoną obsługę przesyłania danych, wykrywania funkcji zajmującej więcej czasu czy zatrzymywania pobierania danych podczas wykonywania dłuższych procesów. Przekłada się to na szybkość wyświetlania stron internetowych.

Sposoby optymalizacji serwerów dla dużego ruchu

Load Balancer

Witryny, które są obciążone dużym natężeniem ruchu, obsługują olbrzymią liczbę żądań od użytkowników. Odpowiedzią muszą być szybko wysyłane i poprawne dane. Takiej ilości zapytań nie jest w stanie obsłużyć jeden serwer i konieczna jest budowa ich sieci, czyli farmy serwerów.

Do urządzeń w ramach farmy należy odpowiednio przyporządkować zadania, aby rozkładały się równomiernie, nie prowadząc do przeciążenia żadnego z urządzeń. Load Balancer to moduł, który służy takiej właśnie, optymalnej dystrybucji ruchu sieciowego.

Dzięki temu możliwe jest uzyskanie maksymalnej możliwej wydajności i wykorzystanie pełni możliwości serwerów. Czas odpowiedzi każdego z nich zostaje zminimalizowany a zmaksymalizowana przepustowość. Gwarantuje to także stabilność działania strony internetowej, ponieważ gdy jeden z serwerów ulegnie awarii, jego zadania może przejąć inny. 

Moduł równoważenia obciążenia przekłada się także na skalowalność systemu, czyli możliwość elastycznej modyfikacji rozmiarów farmy. I tak gdy dodajemy do niej kolejny serwer, automatycznie jest on wykorzystywany dla obsługi żądań użytkowników.

Load Balancery mogą być ustanowione dla każdej z usług serwera WWW. Ich umiejętna konfiguracja jest kluczowa dla obsługi dużego ruchu na stronie internetowej. 

Segregacja usług

Segregacja usług polega na przydzieleniu osobnej maszyny wirtualnej dla każdej usługi. Poszczególne maszyny wirtualne mogą być optymalnie skonfigurowane pod kątem konkretnej usługi, np. bazy danych czy PHP. Dzięki temu optymalizujemy działanie usług i osiągamy większą elastyczność systemu.

Zaletą tego rozwiązania jest także ułatwienie monitorowania działania usług. Jeżeli pojawia się problem z ładowaniem strony, jesteśmy w stanie stwierdzić, która z usług jest za to odpowiedzialna, zwracając uwagę na działanie maszyn wirtualnych.

Użycie usług cache

Usługi cache działające po stronie serwera mogą znacząco poprawić czas ładowania się strony. Ich działanie polega na sprawdzaniu przez aplikację w pamięci usługi, czy dane żądanie już się w niej znajduje. 

Jeśli dane są już obecne w pamięci cache, system przesyła je z niej do przeglądarki internetowej wysyłającego żądanie. W innym przypadku wczytywane są z bazy danych, jednocześnie kopiując do pamięci usługi. 

Przy następnej wizycie użytkownika kierującego żądanie dotyczące tych samych danych, czekają już one na pobranie z pamięci cache, przez co nie ma konieczności zaciągania ich z bazy. Znacznie przyspiesza to proces ładowania się strony. 

W pamięci przechowywane są najnowsze wersje danych, a gdy ulegają zmianie, zostają w niej zaktualizowane. Pamięć zostaje wyczyszczona po czasie określonym w kluczu wygaśnięcia.

Usługi tego typu to np. Memcached czy Redis.

Optymalizacja baz danych

Optymalizując bazy danych, trzeba zwrócić uwagę na kilka czynników. Znaczenie ma tu m.in. indeksowanie danych, czyli nadawanie im odpowiednich struktur, ułatwiające ich wyszukiwanie oraz przyspieszające dostęp do rekordów. Należy także zadbać o optymalizację kodu, by uniknąć pętli kodowania.

Istotną poprawę w wydajności działania bazy danych przyniesie również cachowanie kwerend (zapytań), czyli czynności poszukiwania informacji w zasobach bazy. Jeżeli te same kwerendy powtarzają się, powinny być wprowadzane do pamięci cache. W ten sposób można dostarczać użytkownikowi dane szybciej, niż miałoby to miejsce przy każdorazowym poszukiwaniu informacji w bazie danych, a sama baza zostaje odciążona.

Wyzwanie dużego ruchu

Jeśli nasza strona przeżywa duże natężenie ruchu, powinniśmy się skupić na zapewnieniu optymalnej wydajności całego systemu. Dzięki temu będziemy mogli dostarczać użytkownikom dane szybciej, co ma podstawowe znaczenie dla jakości ich doświadczenia. 

W tym celu nie wystarczy trafnie wybrać serwer WWW czy system operacyjny. Kluczowe jest stałe monitorowanie najważniejszych wskaźników usług, nie poprzestając na jednorazowej konfiguracji. 

Ruch na stronie internetowej może się zmieniać i wraz z jego ewentualnym wzrostem konfiguracja serwera WWW może przestać być wystarczająca. Dlatego też należy nieustannie optymalizować jego działanie, aby zapewnić użytkownikom płynne korzystanie z serwisu.

Oferta

Zainteresował Cię ten artykuł?

Oferujemy profesjonalne wsparcie programistów w technologii Web.

Napisz do nas

Może Cie również zainteresować:

Cookies

Nasza strona internetowa używa plików cookies (tzw. ciasteczka) w celach statystycznych, reklamowych oraz funkcjonalnych. Każdy może zaakceptować pliki cookies albo ma możliwość wyłączenia ich w przeglądarce, dzięki czemu nie będą zbierane żadne informacje. Czytaj więcej