[PHP] Zacinanie się Apache 2

Witam,

mam skrypt, który rozpoczyna pobieranie pliku:

header('HTTP/1.1 200 OK');

    header('Content-Disposition: ' .

        'attachment; filename="' . $fname . '"');

    header('Accept-Ranges: bytes');

    header('Content-Type: application/x-unknown');

    header('Content-Transfer-Encoding: binary');

    header('Content-Length: ' . $c_length);

$pobrano = readfile($file);

czyli w zasadzie nic trudnego, skrypt działa. Jednakże gdy pod skrypt podłączy się 10-20 osób proces apache2 na serwerze się tak jakby zacina, nie wiem jak to wytłumaczyć. Wchodząc przez przeglądarkę na stronę wszystko wyświetlane jest poprawnie, jednakże gdy chcę pobrać plik przez skrypt strona wiecznie się ładuje i pomaga tylko komenda w konsoli:

/etc/init.d/apache2 restart

Co może być powodem?

Z reguły tak się dzieje przy dużej ilości procesów. Jakie jest obciążenie serwera i jakie zużycie CPU oraz pamięci podczas stresu?

Swoją drogą - jaka to maszyna, fizyczna/wirtualna, jakie parametry, jakie łącze?

Jest to VPS o następujących parametrach:

Disk Space: 25 GB


Guaranteed RAM: 512 MB


Burstable RAM: 2048 MB


Łącze: 100mbps

W tym najdziwniejsze jest to, że podczas zadyszki użycie ramu wynosi maksymalnie 150mb, do ilości użytych zasobów CPU nie mam dostępu.

Może jakieś optymalizacje Apache mogą pomóc? Albo jakiś inny webserver?

Pozdrawiam

Raczej VPS jest przeciążony lub admin dał jej z mało zasobów lub włączył ograniczenia co do ilości połączeń z bazą/serwerem lub ilości żądań… - w sumie admin powinien wiedzieć co się dzieje i dlaczego.

Ile kont jest na jednym fizycznym serwerze? Czy to płatny serwer? W sumie czy płatny czy nie to masz chyba podane na jakiej fizycznej maszynie się znajdujesz (parametry).

Czy w konsoli/putty poniższe polecenie nic nie pokazuje?

cat /proc/cpuinfo

Dostaje wiadomość:

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 37

model name : Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz

stepping : 2

cpu MHz : 3210.074

cache size : 4096 KB

physical id : 0

siblings : 4

core id : 0

cpu cores : 2

apicid : 0

fpu : yes

fpu_exception : yes

cpuid level : 11

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm

bogomips : 6420.14

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

power management: [8]


processor : 1

vendor_id : GenuineIntel

cpu family : 6

model : 37

model name : Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz

stepping : 2

cpu MHz : 3210.074

cache size : 4096 KB

physical id : 0

siblings : 4

core id : 2

cpu cores : 2

apicid : 4

fpu : yes

fpu_exception : yes

cpuid level : 11

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm

bogomips : 6419.83

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

power management: [8]


processor : 2

vendor_id : GenuineIntel

cpu family : 6

model : 37

model name : Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz

stepping : 2

cpu MHz : 3210.074

cache size : 4096 KB

physical id : 0

siblings : 4

core id : 0

cpu cores : 2

apicid : 1

fpu : yes

fpu_exception : yes

cpuid level : 11

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm

bogomips : 6419.77

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

power management: [8]


processor : 3

vendor_id : GenuineIntel

cpu family : 6

model : 37

model name : Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz

stepping : 2

cpu MHz : 3210.074

cache size : 4096 KB

physical id : 0

siblings : 4

core id : 2

cpu cores : 2

apicid : 5

fpu : yes

fpu_exception : yes

cpuid level : 11

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm

bogomips : 6419.77

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

power management: [8]

W każdym razie teraz nie jest źle, ostatnio serwer nie zaliczył żadnej zwiechy.

Aczkolwiek jeśli macie jakieś pomysły, proszę pisać.

Jest to płatny VPS, a nie wiem ile jest maszyn per serwer.

No to jest 2 rdzeniowy 4-wątkowy (wydajność zapewne tak jak przy 2-3 rdzeniach, pamiętamy wątki z P4…), nie jest to żadna rewelacja, zakładając że jest ok. 10 VPSów, 16GB RAM i naturalnie RAID, każdy jest w kilku procentach dociążony przez kilku użytkowników na minute no to bez problemu można go zaciąć choćby przez ograniczenia i dużą ilość procesów.

Pozwolę sobie odświeżyć, gdyż próbowałem na kilku innych VPS’ach, i na wszystkich jest tak samo…

Może to jest błąd ustawień apache?

Moze zbyt ostra polityka jednoczesnych połączeń itp. Zobacz jakie masz dodatki zabezpieczające przed np. atakami DoS