2016-04-01 10 views
5

Ho un'istanza EC2 che esegue uno stack LAMP di base come server web. Gli utenti possono caricare le foto attraverso la mia applicazione web che vengono poi memorizzate in una directory e registrate in MySQL. In genere questi caricano alla velocità consentita dalla velocità di upload di un utente.Caricamenti di file più lenti della velocità di upload della rete dell'utente su Apache (EC2)

Sfortunatamente, più utenti hanno segnalato che a volte i caricamenti di foto stanno rallentando, richiedendo fino a 2 minuti per foto, mentre su altri siti gli utenti sono in grado di caricare molto più velocemente.

Come ottimizzare Apache (presumo che sia Apache?) Per non diventare un collo di bottiglia? Questo problema può essere risolto con MPM Preforking? O è forse un problema di blocco del database?


Alcune statistiche aggiuntive di questa configurazione (è abbastanza vaniglia):

Instance Type: t2.small EBS-optimized: False PHP v5.4 Server version: Apache/2.4.18 (Amazon)

L'unica altra cosa che sto considerando rilevante è che quando una foto è caricato, è ridimensionata tramite Imagick ad una dimensione di anteprima (che è ovviamente un po 'impegnativa per la CPU, ma normalmente è abbastanza veloce).

+0

sono le foto della stessa dimensione? –

+0

Sì. Sono foto da iPhone/telefoni Android - in genere pochi MB - e possono essere caricati più alla volta. –

+0

Se stanno caricando da una rete cellulare non sentirai mai la fine di questi reclami. Potrebbero esserci cose che puoi fare da te, ma dovresti impostare aspettative per gli utenti/gli stakeholder sul fatto che ci sarà sempre una certa variabilità nella velocità, specialmente la velocità di upload. –

risposta

0

Questo tipo di problema può essere dovuto a molte ragioni. Ma tra le variabili che puoi controllare, puoi iniziare con la limitazione della rete. Sostanzialmente supponiamo che ci siano dieci utenti nella tua applicazione. Tutto con la stessa velocità di upload. Quando tutti cercano simultaneamente di caricare le immagini. assumere nove otterrebbe una buona velocità. Ma poiché il tuo server può avere solo una velocità di trasmissione fissa che tutti i nove ragazzi utilizzano, anche se il decimo è con le stesse prestazioni di rete, caricherà l'immagine più lentamente. Per gestire questo problema, si limita la velocità per connessione nel server, chiamata anche limitazione della rete. È possibile trovare la stessa configurazione in apache here. Ma ancora una volta questa è solo una speculazione e nella vita reale ci possono essere molti fattori.

+0

Grazie per la risposta. Quindi, se capisco il tuo punto, stai dicendo che se diversi utenti stanno caricando tutto in una volta, qualcuno può ottenere la parte più corta del bastone. Questo sembra accadere quando solo un utente sta caricando, però. Qualche idea su cosa potrebbe causare un singolo utente a caricare lenti da un caricamento multi-foto? –

+0

@JeremyPenrod come ho sottolineato che la risposta è solo una delle molte possibilità. se persiste con un singolo utente, può essere un problema di rete o forse qualche bug nel programma – georoot

1

Un sacco di informazioni mancanti, come quello che stai correndo, quali sono le tue specifiche. La prima cosa che farei è aumentare la memoria tramite il file php.ini.

impostato ('memory_limit', '64M'); (il mio è impostato su 256m OPPURE modificarlo globalmente in php.ini (in Lampp ubicato in "\ lampp \ php \ php.ini"):

memory_limit = 8M // cercare questo "memory_limit" e regolarlo per le vostre esigenze. Dopo che apache riavvio ...

vedere Figura. impostazione in giallo dovrebbe essere la seguente.

enter image description here