Puncte:2

Descărcare de fișiere mari de pe site-ul web găzduit

drapel cn

Îmi pare rău dacă întrebarea este simplă, sunt nou în domeniul dezvoltării web și al serverelor auto-găzduite.

Avem un site web găzduit, care ar trebui să aibă un buton pentru a descărca un fișier zip mare (1 GB). Pentru aceasta, avem o soluție simplă în index.html fişier:

<form action="path/to/file.zip" style="display: inline;">
    <button type="submit" class="btn btn-light">DOWNLOAD</button>
</form>

Acest lucru a funcționat de obicei bine. Problema este că ori de câte ori mai mulți vizitatori încearcă să descarce fișierul în același timp, serverul rămâne fără memorie RAM și site-ul se blochează. Acest lucru se datorează faptului că de fiecare dată când cineva face clic pe butonul de descărcare, fișierul pare să fie încărcat pe RAM în timpul întregului proces de descărcare. Când mai mulți vizitatori dau clic pe butonul Descărcare, fișierul este încărcat pe RAM de mai multe ori. Ca informații suplimentare, site-ul este construit cu python+Flask, iar serverul are 12 GB de RAM.

Am văzut că în acest răspuns (Cum pot opri Apache să-mi prăbușească întregul server?) sugerează să „încărcați Apache pentru procesele de lungă durată”, dar nu sunt sigur cum să realizez asta. Există vreo soluție pe care o puteți sugera pentru a rezolva această problemă?

Vă mulțumesc foarte mult anticipat.

drapel vn
Luați în considerare găzduirea fișierului undeva în afara serverului, cum ar fi Amazon S3.
drapel br
Nu sună deloc corect - ce motor real de server web folosești?
djdomi avatar
drapel za
chiar și fișierul ar avea 50 GB sau mai mult, ar trebui să îl transmită în flux în loc să se deschidă
drapel vn
@Chopper3 Pariez că cererile trec prin controlerul frontal al aplicației, mai degrabă decât direct către serverul web.
eugenio_chisari avatar
drapel cn
@Chopper3 folosim Nginx. @ djdomi ați putea să-mi indicați o resursă care să explice cum să fac asta? Va multumesc tuturor.
djdomi avatar
drapel za
@eugenio_chisati dacă utilizați avionul nginx, postați conf. nginx, acesta nu este un comportament normal pentru nginx, puteți încerca să utilizați `directio 50m` pentru a verifica dacă încă rulați ooom
eugenio_chisari avatar
drapel cn
Salutare tuturor, vă mulțumesc foarte mult pentru feedback, mi-a fost foarte util să pot pune întrebările potrivite și să găsesc un răspuns. Se pare că serverul nostru nginx trimitea pur și simplu cererile de la adresa publică la adresa locală de pe serverul nostru; aplicația folosea de fapt un server web Tornado. Deci, soluția a fost pur și simplu să folosiți nginx direct pentru a servi fișierele statice și numai redirecționarea către serverul tornado pentru partea non-statică. Acest lucru a rezolvat problema memoriei. Vă mulțumesc din nou pentru ajutor și pentru că ați suportat întrebările mele pentru începători :)
Puncte:1
drapel cn

Vă mulțumesc foarte mult pentru feedback, mi-a fost foarte util să pot pune întrebările potrivite și să găsesc un răspuns.

Se pare că serverul nostru nginx trimitea pur și simplu cererile de la adresa publică la adresa locală de pe serverul nostru; aplicația folosea de fapt un server web Tornado. Deci, soluția a fost pur și simplu să folosiți nginx direct pentru a servi fișierele statice și numai redirecționarea către serverul tornado pentru partea non-statică. Acest lucru a rezolvat problema memoriei.

Vă mulțumesc din nou pentru ajutor și pentru că ați suportat întrebările mele pentru începători :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.