Wpis z mikrobloga

Pytanie do Mirków robiących internety. Chcę skrócić czas requestów do plików statycznych, serwowanych przez Apache. W samym apaczu niewiele zdziałam, ale na poziomie systemu pewnie tak. Jest jakis soft rozsadnie #!$%@? statyczne pliczki w RAM? Tmpfs/ramdisk odpada, bo nie moge ich tracic wraz z wyczyszczeniem Ram #apache2 #linux #serwery #php #programowanie
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@gkm: linux sam #!$%@? pliki w wolnym ramie. (w wyjściu z np. "free -m" masz kolumnę z "buf / cache").

Może zainteresujesz się nginxem, jest generalnie wydajniejszy i do wysyłania statycznych plików używa sendfile().
  • Odpowiedz
@elirath: nie mam mozliwosci zmiany apache > nginx niestety
Moze nie tyle chodzi o koniecznie trzymanie tego w ram, a o skrocenie ttfb i pobierania plikow (a serwowanie z ram bedzie najszybsze dlatego o tym wspomnialem). Wszedzie znajde porady typu domain sharding, kompresja, progresywne jpg itp :)
Narazie kombiuje z ramdisk dla plikow sesji i tmpdir mysql, picowanie configa apache (np okazalo sie, ze wylaczenie hostnamelookups niewiele da jesli uwzgledniles
  • Odpowiedz
@gkm: Jeśli koniecznie chcesz Apache to postaw poza nim lżejszy serwer (lighttpd, nginx) jako proxy, a w nim przekazywanie treści niestatycznych do Apache uruchomionego na innym porcie (cały ruch idzie na lekki serwer, a on albo serwuje statyczne treści, albo przekazuje żadanie do Apache). Na tym lekkim serwerze daj jakiś moduł w stylu memcached.
  • Odpowiedz
@gkm: varnish przed apachem. Acz czas requestów dla statycznych plików to kropla w morzu. Najpierw bym wywalił apache na rzecz nginx, później postawił varnish z przodu, później zmienił parę wartości w sysctl


net.ipv4.netfilter.ip_conntrack_max = 1048676
net.core.somaxconn = 3000
net.core.netdev_max_backlog
  • Odpowiedz
@list86: Nie moge uzyc varnisha, serwis ma tablice a'la facebook, serwuje wiec w kolko duzo "malych", szybko by się zapchal

@Vealheim: dodatkowy lekki serwer rozwazam, kojarzysz cos co bedzie wysylalo pliki jako cookie-free?
  • Odpowiedz
@gkm: a ty wiesz że możesz zrobić np.

if (req.url ~ "/dupa/jasiu") { return (pass); }
i wtedy pewnych urli nie będzie zapisywał? Oprócz tego jego się nie da zapchać, po prostu w miarę wypełniania jego pamięci (która może być RAM, może być plikiem na dysku) będzie zwalniał te najmniej używane, niepotrzebne obiekty. W ogóle to trochę od dupy strony się zabierasz, bo to dynamiczna treść obciąża serwer, nie statyczne
  • Odpowiedz
@list86: nie zabieram się od dupy strony. Nigdzie nie napisałem, że serwer jest obciążony (a nie jest) - walczę o najkrótsze czasy odpowiedzi gdzie się da i jednym z punktów jest właśnie czas odpowiedzi dla plików statycznych.
  • Odpowiedz
@gkm: no to najlepszy będzie nginx i pliki trzymane na SSD lub szybkich RAID.

Żeby się wybić ponad to możesz dostawić varnish który będzie miał cache w RAM, a jeszcze wyżej - to już anycast i wiele serwerów rozsianych po świecie.

A i tak, pomijając ping do danego serwera z danego miejsca na świecie, różnice będą rzędu milisekund..

Możesz jeszcze inaczej zrobić, pliki wrzucić na s3 i zapomnieć o wszystkim,
  • Odpowiedz