netcoffee.pl*po godzinach - reaktywacja

Ten blog jest kontynuacją bloga dostępnego ongiś pod adresem netcoffee.pl/pogodzinach.
Artykuły, które na to zasługują są przenoszone do nowej wersji bloga. Pozostałe wkrótce znikną.

2006-02-13

Przykładowa konfiguracja serwera Apache

Przeglądając ostatnio archiwa dokumentów na dysku, natknąłem się na starą pracę zaliczeniową (z przedmiotu którego nazwy już nie pamiętam ;) ). Opisałem w niej przykładową konfigurację serwera Apache.

Poruszane zagadnienia obejmują:

  • serwery wirtualne
  • logowanie
  • pliki własnej konfiguracj - .htaccess
  • własne strony błędów
  • strony użytkowników
  • negocjacja zawartości
  • uwierzytelnianie

Cała opisana w dokumencie konfiguracja oczywiście działała na testowej instalacji Apache pod Windows 2000.

Doszedłem do wniosku, że mimo braków samego opracowania, warto udostępnić dokument szerszej publiczności. Co prawda powstał on ponad dwa lata temu i nigdy nie pretendował do miana "Wprowadzenia do Apache", myślę jednak, że może przydać się nie jednemu początkującemu użytkownikowi Apache.

Konfiguracja Apache - PDF 158kB

Dokument jest udostępniony na licencji Creative Commons - BY-NC-SA. Nie biorę na siebie żadnej odpowiedzialności za skutki wykorzystania informacji zawartych dokumencie.

2006-02-11

Kontrola wydajności - Apache Benchmark

Niejednokrotnie wprowadzamy rozwiązania, co do wydajności których nie możemy być pewni. Warto jest wówczas skorzystać z narzędzia pozwalającego na jej kontrolę. Moim ulubionym narzędziem jest Apache Benchmark (ab.exe), dostępny razem z dystrybucją serwera Apache.

AB (Apache Benchmark) pozwala na wielokrotne wywołanie URL i przygotowuje statystyki czasu wykonania.
Program wywołujemy z linii poleceń, jego najważniejsze parametry to:

  • n - ilość zapytań
  • c - ilość zapytań w tym samym czasie
  • k - wymusza użycie stałego połączenia - HTTP KeepAlive

Przykładowe wywołanie może mieć postać:

ab.exe -n100 -c100 -k http://www.example.org/ab_test.php

Spowoduje ono pobranie pliku ab_test.php z serwera www.example.org 100 razy, przy czym w jednym czasie będą przeprowadzane 3 połączenia.


Podczas testowania wydajności skryptów, warto pamiętać o włączeniu opcji stałego połączenia HTTP (parametr -k). Dzięki temu, czasy nawiązywania połączeń z serwerem nie wpłyną znacząco na wyniki. Jeżeli natomiast testujemy ogólną wydajność serwera oraz jego dostępność z innych sieci, warto pozostawić domyślne ustawienie.


Przykładowe wyniki działania Apache Benchmark:


Wynik 1

This is ApacheBench, Version 2.0.40-dev < 
                            $Revision: 1.121.2.8 $> apache-2.0 
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, 
                            http://www.zeustech.net/ 
Copyright (c) 1998-2002 The Apache Software Foundation, 
                            http://www.apache.org/  

Benchmarking xxxxxxxxxxxxxxx (be patient).....done 


Server Software:        Apache/2.0.49 
Server Hostname:        xxxxxxxxxxxxxxx 
Server Port:            80 

Document Path:          /xxxxxxxxxxxxxxx/normal.php 
Document Length:        7496 bytes 

Concurrency Level:      3 
Time taken for tests:   6.879892 seconds 
Complete requests:      100 
Failed requests:        0 
Write errors:           0 
Total transferred:      766700 bytes 
HTML transferred:       749600 bytes 
Requests per second:    14.54 [#/sec] (mean) 
Time per request:       206.397 [ms] (mean) 
Time per request:       68.799 [ms] 
                        (mean, across all concurrent requests) 
Transfer rate:          108.72 [Kbytes/sec] received 

Connection Times (ms)                
              min  mean[+/-sd] median   max 
Connect:        0    2   5.2      0      30 
Processing:   130  196  38.3    190     310 
Waiting:       90  172  41.0    160     300 
Total:        130  198  38.5    190     310 

Percentage of the requests served within a certain time (ms) 
      50%    190 
      66%    210 
      75%    220 
      80%    230 
      90%    260 
      95%    270 
      98%    300 
      99%    310 
     100%    310 (longest request)

Wynik 2

This is ApacheBench, Version 2.0.40-dev < 
                             $Revision: 1.121.2.8 $> apache-2.0    
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, 
                             http://www.zeustech.net/    
Copyright (c) 1998-2002 The Apache Software Foundation, 
                             http://www.apache.org/        

Benchmarking xxxxxxxxxxxxxxx (be patient).....done        

Server Software:        Apache/2.0.49    
Server Hostname:        xxxxxxxxxxxxxxx    
Server Port:            80      

Document Path:          /xxxxxxxxxxxxxxx/normal.php    
Document Length:        7496 bytes      

Concurrency Level:      3    
Time taken for tests:   5.988612 seconds    
Complete requests:      100    
Failed requests:        0    
Write errors:           0    
Total transferred:      766700 bytes    
HTML transferred:       749600 bytes    
Requests per second:    16.70 [#/sec] (mean)    
Time per request:       179.658 [ms] (mean)    
Time per request:       59.886 [ms] 
                        (mean, across all concurrent requests)    
Transfer rate:          124.90 [Kbytes/sec] received        

Connection Times (ms)
                min  mean[+/-sd] median   max    
Connect:        0    2   4.7      0      20    
Processing:    90  168  48.7    160     350    
Waiting:       70  144  50.3    140     330    
Total:         90  170  48.5    160     350        

Percentage of the requests served within a certain time (ms)
      50%    160
      66%    180
      75%    190
      80%    210
      90%    230
      95%    260
      98%    330
      99%    350
     100%    350 (longest request)

W obu przypadkach testowany był jeden skrypt PHP. Podczas pierwszego testu, skrypt łączył się z serwerem MySQL za pomocą funkcji mysql_connect(). Podczas drugiego testu, skrypt został zmodyfikowany tak, aby do połączenia z serwerem MySQL używał funkcji mysql_pconnect() która otwiera stałe połączenie z serwerem MySQL. Jak widać, użycie stałego połączenia z bazą przyspieszyło stukrotne wykonanie skryptu o 0,89 sekundy.


Polecam uwadze