PDA

View Full Version : [debian] Limitare le risorse


@GuyBrush@
03-09-2009, 11:49
Salve a tutti, sto sviluppando facendo un programma PHP per inviare newsletter (non in ccn, ma una ad una).

Durante l'invio si blocca tutto (ad esempio, il sito non è accessibile).
Pensavo fosse un problema di risorse, ma anche configurando cpulimit (come da precedente post, ma quello è un altro discorso) il problema rimane.

A questo punto non so cosa fare, può essere un problema di banda? di memoria? cosa potrei fare secondo voi?

sacarde
03-09-2009, 15:54
potrebbe esere il tuo programma ?

prova a inviare solo alcune mail... e vedi se lo fa

@GuyBrush@
03-09-2009, 17:02
E' sicuramente il mio programma :)

Spiego il funzionamento in breve:


for ($i=0; $i<1000; $i++) {
mail()...
}

Facendo così (ho semplificato all'osso) durante l'invio il sito resta fermo perchè occupa tante risorse, come si vede dallo screenshot.

Ciò che voglio fare è poter dire "fa si che le risorse non vengano occupate a a tal punto da bloccare il sito"... o qualcosa del genere

Partendo dal fatto che non sembra la CPU (ho provato a limitarla con CPULIMIT ma il problema persiste)

RaouL_BennetH
03-09-2009, 17:08
la butto lì:

mandare n mail per volta e finito un flusso far partire il successivo ?

sacarde
03-09-2009, 19:00
fallo girare con nice maggiore


http://openskill.info/infobox.php?ID=165

damiano77
05-09-2009, 14:39
scusa ma quali sarebbero le risorse occupate?

gandrea
06-09-2009, 10:57
invece di fare mail( bla bla ) x ogni destinatario fai una chiamata sola a mail e metti i destinatari in ccn . se fai mail a una ad una mi sa che si rallenta tanto .. tanto che ti frega mica si leggono fra di loro

@GuyBrush@
07-09-2009, 09:31
non si possono fare mail personalizzate con i destinatari in ccn...

gurutech
09-09-2009, 10:40
for ($i=0; $i<1000; $i++) {
mail()...
}


se il tempo non è un problema potresti spedirne una decina per volta e attendere che si svuoti la coda... esempio grezzo (da sistemare di sicuro)

for ($i=0; $i<100; $i++) {
for ($j=0; $j<10; $i++) {
mail()...
}
QUEUELEN=$(mailq | wc -l)
while ( [ $QUEUELEN -gt 0 ] ); do sleep 1; done
}