Gestione della banda in Apache: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (da adottare)
 
(15 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Guida da adottare}}
[http://packages.debian.org/debarchiver Debarchiver] � uno strumento comodo e potente per poter gestire facilmente un repository Debian ben strutturato e suddiviso. Oltre a questo permette di mantenerlo in ordine (evitando il mantenimento di versioni vecchie) senza richiedere manutenzione da parte dell'amministratore.


=Installazione=
L'installazione semplice, in quanto il programma incluso in debian:
<pre>
# apt-get install debarchiver
</pre>


Raccomando agli utenti di Sarge di installare la versione presente in testing, in quanto molto pi� aggiornata e funzionale di quella inclusa nella release ''Stable''.
== Introduzione ==
Questo articolo affronta il problema della gestione della banda in Apache (Ver. 1 e Ver. 2), mostrando come installare e configurare tre diversi moduli utilizzabili a tale fine:
=== mod_bandwidth ===
* HomePage: http://www.cohprog.com/mod_bandwidth.html
* Licenza: Apache Group licence
* Copyright: Yann Stettler and CohProg SàRL
* Versione Apache: 1
=== bw_mod ===
* HomePage: http://www.ivn.cl/apache/
* Licenza: Apache 2.0 License/[http://www.ivn.cl/apache/LICENSE.txt Ivn Project License]
* Copyright: Ivan Barrera A.
* Versione Apache: 2
=== mod_bwshare ===
* HomePage: http://www.topology.org/src/bwshare/README.html
* Licenza: [http://www.topology.org/src/bwshare/LICENCE Alan Kennington's modified Artistic Licence]
* Copyright: Alan Kennington
* Versione Apache: 1 e 2


=Configurazione=
== Installazione ==
Tutta la configurazione di debarchiver � racchiusa in un unico file: '''/etc/debarchiver.conf''', che analizziamo nel dettaglio:


{{Box|Nota Bene:|le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.}}
=== mod_bandwidth ===
Il modulo <code>'''mod_bandwidth'''</code> è installato di default insieme al server apache; lo possiamo trovare in <code>'''/usr/lib/apache/1.3/'''</code>.
Se questo modulo dovesse dare problemi (esempi: non imposta correttamente la banda, ma sembra che i limiti che impostiamo siano visti come bit e non come byte, non accetta la direttiva MaxConnection), vi consiglio di reinstallarlo come descritto qui sotto.


* rechiamoci sul sito del produttore: http://www.cohprog.com/mod_bandwidth.html e scarichiamo l'ultima versione (link diretto:
ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c).<br/>
* per poter compilare questo modulo, abbiamo bisogno del pacchetto <code>'''apache-dev'''</code>. Per installarlo è sufficiente dare:
<pre>
<pre>
$destdir = "/var/lib/debarchiver/dists";
# apt-get install apache-dev
$inputdir = "/var/lib/debarchiver/incoming";
</pre>
</pre>
Dove verr� creato il repository (''destdir'') e dove vengono inseriti i pacchetti da aggiungere al repository (''inputdir'')
* ora siamo pronti per compilare:
 
<pre>
<pre>
# $copycmd = "cp -af";
$ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth.so
# $movecmd = "mv";
# $rmcmd = "rm -f";
# $vrfycmd = "dscverify";
</pre>
</pre>
La lista dei comandi utilizzati nella gestione del repository... quelli di default, normalmente, sono corretti per la maggior parte delle situazioni.
* una volta pronto il modulo, eseguiamo i seguenti comandi:
 
<pre>
<pre>
# $cinstall = "installed";
# cd /usr/lib/apache/1.3/
# mv mod_bandwidth.so mod_bandwidth.so.bk
# mv /home/maxer/mod_bandwidth.so ./
</pre>
</pre>
Dove verranno messi i file ''.changes''.


in questo modo abbiamo creato una copia del modulo precedente, se presente, e poi abbiamo spostato il modulo appena compilato nella cartella dei moduli di apache.
==== Aggiornamento ====
Il procedimento appena presentato, crea diversi problemi, soprattutto in fase di aggiornamento del sistema: ogni volta il pacchetto
apache viene aggiornato, infatti, il modulo appena creato verrà sovrascritto con quello "vecchio", e apache non si riavvierà.
Una alternativa è creare il modulo con un altro nome:
<pre>
<pre>
# $distinputcriteria = "^kernel.*\\.deb\$";
$ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth_new.so
# $distinputdirs = "/path";
# cp mod_bandwidth_new.so /usr/lib/apache/1.3/mod_bandwidth_new.so
# cd /usr/lib/apache/1.3/
# cp 500mod_bandwidth.info 500mod_bandwidth_new.info
</pre>
</pre>
Indica il criterio con il quale verranno accettati i pacchetti non aventi un file ''.changes'' e dove devono essere inseriti per essere ''presi'' dal sistema


Ora bisogna modificare il file <code>'''500mod_bandwidth_new'''</code> modificando il nome del
vecchio modulo con quello nuovo:
<pre>
<pre>
# $verifysignatures = 0;
LoadModule: bandwidth_module /usr/lib/apache/1.3/mod_bandwidth-new.so
Description: Bandwidth management on a per-connection basis
</pre>
</pre>
Attiva (1) o disattiva (0) la verifica della firma dei pacchetti inseriti nella ''inputdir''.


Ora è necessario modificare il file <code>'''/etc/apache/modules.conf'''</code>: la nuova direttiva da inserire, sostituendo eventualmente quella preesistente, è la seguente:
<pre>
<pre>
# $verifysignaturesdistinput = 0;
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth_new.so
</pre>
</pre>
come sopra, ma riguarda la directory ''distinputdirs''


<pre>
=== bw_mod ===
# $bzip = 0;
Come prima cosa procuriamoci il modulo dal [http://www.ivn.cl/apache/ sito dello sviluppatore]. A questo punto estraiamolo:
</pre>
<pre># tar vzxf bw_mod-6.0.tgz</pre>
Attiva la generazione di file compressi con bz2
spostiamoci nella cartella appena creata (<code>bw_mod-6.0.tgz</code>) e verifichiamo che sia presente il file <code>bw_mod-6.0.c</code>.
 
Ora, per poter compilare il nostro modulo, ci servono gli strumenti per farlo: nel nostro caso dovremo installare, tramite apt-get, il pacchetto <code>'''apache2-dev'''</code>:
<pre># apt-get install apache2-dev</pre>
Bene, ora compiliamo tramite il comando <code>/usr/bin/apsx2</code>:
<pre># /usr/bin/apxs2 -i -a -c bw_mod-0.6.c</pre>
Se non ci sono errori, possiamo procedere. Alla fine della compilazione sono state automaticamente aggiunte queste righe al file <code>/etc/apache2/httpd.conf</code>:
<pre>Include /etc/apache2/sysconfig.d/loadmodule.conf
LoadModule bw_module /usr/lib/apache2/bw_mod-0.6.so</pre>
{{Box | Nota |Apache2 usa come file di configurazione <code>/etc/apache2/apache2.conf</code>; tuttavia, per retrocompatibilità, è presente anche un file <code>/etc/apache2/httpd.conf</code> in cui vengono inseriti solitamente gli "includes" dei moduli di terze parti laddove questi non usino il sistema <code>'''mods-available/mods-enabled'''</code>.


<pre>
In questo caso non dobbiamo preoccuparci, in quanto nel file <code>apache2.conf</code> c'è un richiamo a <code>httpd.conf</code>.}}
%distinputdirs =
        (
        stable => 'stable',
        testing => 'testing',
        unstable => 'unstable'
        );
</pre>
Permette di indicare i nomi delle directory contenute nella directory ''incoming'' che provvederanno a raccogliere i pacchetti di una deretminata release. In questo caso, nella release ''stable'' verranno inseriti i pacchetti presenti nella directory ''/var/lib/debarchiver/incoming/stable/''.


<pre>
=== mod_bwshare ===
@distributions = ('stable', 'testing', 'unstable');
Ancora da scrivere
</pre>
Questa lista indica le release presenti nel repository (in questo caso le 3 release ''stable'', ''testing'' e ''unstable'').


== Configurazione ==


=== mod_bandwidth ===
Ora configuriamo apache per utilizzare mod_bandwidth.<br/>
Aggiungiamo il modulo al file <code>'''/etc/apache/modules.conf'''</code>. Per fare questo abbiamo due possibilità:
* modificare a mano il file, aggiungendo la seguente riga, alla fine del file:
<pre>
<pre>
%distmapping =
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so
        (
        stable => 'sarge',
        testing => 'etch',
        unstable => 'sid'
        );
</pre>
</pre>
Schema per la creazione di link tra i nomi delle release reali e i nomi dello stato delle release.
*utilizzare <code>modules-config></code>:
 
<pre>
<pre>
# @architectures = ('i386');
modules-config apache enable mod_bandwidth
</pre>
</pre>
Permette di indicare la lista di archietture (racchiuse tra apici e separate da una virgola) presenti nel repository.


Creiamo le cartelle temporanee per <code>mod_bandwidth</code>:
<pre>
<pre>
@sections = ('main', 'contrib', 'non-free');
# mkdir /tmp/apachebw
# mkdir /tmp/apachebw/master
# mkdir /tmp/apachebw/link
# chown -R www-data:www-data /tmp/apachebw
# chmod -R 775 /tmp/apachebw
</pre>
</pre>
Indica le sezioni in cui � suddiviso il repository. La sezione ''non-free'' non � pi� presente nelle release ufficiali Debian a partire dal rilascio di Sarge.
(ricordiamoci che è possibile che qualche script ripulisca la directory <code>'''/tmp'''</code>, quindi cambiamo la posizione di queste cartelle con la direttiva <code>BandWidthDataDir</code>).


Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione:
<pre>
<pre>
@mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it');
# /etc/init.d/apache reload
</pre>
</pre>
Permette di indicare a chi verr inviata una email di conferma dell'inserimento del pacchetto... possibile specificare i seguenti parametri:
; Indirizzo Email : l'email verr inviata a quel determinato indirizzo email
; Indirizzo email incompleto : l'email verr inviata all'utente proprietario del file usando l'host specificato dopo il simbolo ''@''. Nel caso riportato, se l'utente proprietario del file ''maxer'', l'email verr inviata a ''maxer@knio.it''.
; Stringa senza @ : Verr usato il valore del campo espresso (nell'esempio vengono utilizzati ''Maintainer'' e ''Uploader'') come indirizzo email.


==== Note per il corretto funzionamento ====
Per ottenere risultati, è importante che non ci siano dei link morti nella directory <code>'''link'''</code> di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo.
Potrebbe essere una buona idea, a questo scopo, eseguire lo script <code>'''cleanlink.pl'''</code>, che provvede a rimuovere automaticamente i link morti.
==== Direttive globali di configurazione ====
===== <code>'''BandWidthDataDir'''</code> =====
'''Sintassi''': <code>BandWidthDataDir <directory></code><br/>
'''Default''': <code>/tmp/apachebw</code><br/>
'''Contesto''': server config<br/>
Imposta la directory in cui mod_bandwidth conserve i suoi file temporanei. All'interno di questa directory devono essere presenti anche le directory link e master; tutte queste cartelle devono essere scrivibili da apache (che in Debian utilizza l'utente ed il gruppo www-data).
===== <code>'''BandWidthModule'''</code> =====
'''Sintassi''': <code>BandWidthModule <On|Off></code><br/>
'''Default''': <code>Off</code><br/>
'''Contesto''': per server config<br/>
Abilita o disabilita il modulo.
{{Box|NOTA:|Per utilizzarlo all'interno di un virtual host, è necessario inserire la direttiva <code>'''BandWidthModule On'''</code> all'interno del blocco del virtual host. Se viene attivato globalmente (cioè all'interno del file <code>httpd.conf</code>, fuori da ogni blocco), il modulo è attivo automaticamente in tutti i sottoblocchi (Virtual Host, etc).}}
===== <code>'''BandWidthPulse'''</code> =====
'''Sintassi''': <code>BandWidthPulse <microseconds></code> <br/>
'''Default''':<br/>
'''Contesto''': per server config<br/>
Modifica l'algoritmo usato per calcolare la larghezza di banda e per trasmettere i dati. Nella modalità normale (obsoleta), il modulo cerca di tramettere i dati in pacchetti di 1Kb. Questo vuol dire che, se la banda disponibile è di 512B, il modulo trasmette 1Kb, aspetta 2 secondi, trasmette 1Kb e così via. Impostando questa direttiva, verrà cambiato l'algoritmo in modo che il server aspetterà sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varierà di conseguenza, così da rispettare i criteri indicati nelle altre direttive. Il valore è in microsecondi.
'''Esempio:'''
<pre>
<pre>
%release = (  'origin' => "",
BandWidthPulse 1000000 #1 secondo
                'label' => "",
                'description' => "");
</pre>
</pre>
Informazioni aggiuntive da inserire nel file Release.
Se oltre a questa direttiva è presente un limite a 512B, il server trasmetterà 512B, aspetterà un secondo, trasmetterà 512B, aspetterà un secondo e così via.


<pre>
# $cachedir = '/var/cache/debarchiver';
</pre>
Nel caso venga usato ''apt-ftparchive'', indica la directory di cache da usare.


==== Direttive per la configurazione di Directory e/o VirtualServer ====
===== <code>'''BandWidth'''</code> =====
'''Sintassi''': <code>BandWidth <domain|ip|all> <rate></code><br/>
'''Default''': <code>none</code><br/>
'''Contesto''': per directory, .htaccess<br/>
Limita la banda per i file contenuti nella directory e nelle sub-directory, in base alla provenienza (dominio, ip, all).
Gli indirizzi IP possono essere specificati anche nel formato network/netmask (Es: 192.168.0.0/21) <code>'''<rate>'''</code> deve essere espresso in Byte/secondo. Impostato a <code>0</code> indica nessun limite di banda. Possono essere impostati più limiti per la stessa directory; in questo caso, è
importante l'ordine con cui vengono inserite le direttive, in quando mod_bandwidth li scorre dal primo all'ultimo, fermandosi a quello che
rispecchia la situazione.
'''Esempio:'''
<pre>
<pre>
# $gpgkey = "";
BandWidth ecp.fr 0
BandWidth 138.195 0
BandWidth all 1024
</pre>
</pre>
Imposta la chiave GPG con cui firmare i pacchetti che vengono inseriti nel database.
In questo esempio, viene limitata la banda a:
* nessun limite per gli appartenenti al dominio .ecp.fr e alla rete 138.195. ;
* 1024Bytes/secondo per tutti gli altri.


<pre>
# $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase";
</pre>
Indica il percorso del file contenente la password per l'utilizzo della chiave GPG citata nella spiegazione alla direttiva precedente. Trattandosi di un dato molto importante, consigliabile usare dei permessi restrittivi, come ad esempio permettendone la lettura solo all'utente ''debarchiver'' (l'utente usato da debarchiver).


===== <code>'''LargeFileLimit'''</code> =====
'''Sintassi''': <code>LargeFileLimit <filesize> <rate></code><br/>
'''Default''': <code>none</code><br/>
'''Contesto''': per directory, .htaccess<br/>


==Permessi==
Imposta un limite <code>'''<rate>'''</code> da usare quando si trasferiscono file di dimensioni uguali o maggiori a <code><filesize></code>.
Debarchiver � configurato per lavorare correttamente con i server ftp e web. impostato, infatti, il permesso di lettura per tutti gli utenti.
È possibile utilizzare più direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a <code>0</code>, non sarà impostato alcun limite (rimarrà, ovviamente, l'eventuale limite impostato in <code>BandWidth</code>). Se viene impostato a <code>-1</code>, invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva <code>BandWidth</code>) per i file la cui dimensione rispecchia quella direttiva.


Un po' pi� complessa �, invece, la situazione relativa all'utilizzo della directory ''incoming'' da parte degli utenti. La directory in questione � di propriet� dell'utente root e del gruppo ''debarchiver''. Per abilitare un utente ad utilizzare il sistema, quindi, � necessario aggiungerlo al gruppo:
'''Esempio:'''
<pre>
<pre>
# adduser nomeutente debarchiver
LargeFileLimit 200 3072
LargeFileLimit 1024 2048
</pre>
</pre>
Queste direttive portano a questa situazione:
* i file più piccoli di 200Kb, non verranno limitati da queste direttive (rimane attiva la direttiva <code>BandWidth</code>);
* i file di dimensione compresa tra 200Kb e 1023Kb, saranno limitati a 3072Kb/sec;
* i file di dimensione maggiore di 1024Kb, saranno limitati a 2048Kb/sec.


=Utilizzo Reale=
===== <code>'''MaxConnection'''</code> =====
Due esempi relativi alla configurazione di un server web (Apache) e di un server ftp anonimo (vsftpd) per l'accesso al repository.
'''Sintassi''': <code>MaxConnection <connections></code><br/>
'''Default''': <code>0</code> (illimitate)<br/>
'''Contesto''': per directory, .htaccess<br/>


==Server Web==
Imposta il numero di connessioni massime che possono avvenire contemporaneamente. Una volta raggiunto il limite impostato, le nuove connessioni verranno rifiutate. Se impostato a <code>0</code> (valore di default) non saranno presenti delle limitazioni per quanto riguarda il numero di connessioni simultanee (se non quello impostato nelle direttive principali di Apache).
La configurazione di un server web � molto semplice e la si pu� ricondurre a due situazioni particolari:
* configurazione come dominio di 3� livello (Es. <nowiki>http://debian.dominio.it</nowiki>)
* configurazione come directory in un dominio esistente (Es. <nowiki>http://www.dominio.it/debian</nowiki>)


===Dominio di 3 livello===
La configurazione di un dominio di 3 livello dedicato al repository una scelta molto comoda, secondo me...


� sufficiente, infatti, creare un semplice VirtualHost (Dettagli [http://httpd.apache.org/docs/1.3/vhosts/examples.html Apache1.3] [http://httpd.apache.org/docs/2.0/vhosts/ Apache2.0]) in cui viene indicata come ''DocumentRoot'' la directory '''/var/lib/debarchiver'''.
===== <code>'''MinBandWidth'''</code> =====
'''Sintassi''': <code>MinBandWidth <domain|ip|all> <rate></code><br/>
'''Default''': <code>all 256</code><br/>
'''Contesto''': per directory, .htaccess<br/>


Esempio:
Imposta una banda minima per il trasferimento dei dati. Questa direttiva può sovrascrivere le direttive <code>BandWidth</code> e <code>LargeFileLimit</code>, in quanto, in presenza di un numero elevato di connessioni, verrà garantita a tutte la larghezza indicata con questa direttiva, anche se il totale supererà i limiti. Il primo argomento è da usarsi come per la direttiva <code>BandWidth</code>. Deve essere espresso in Byte/Secondo; se viene impostato a <code>0</code>, verrà usato il valore di default (256).
 
'''Esempio :'''
<pre>
<pre>
NameVirtualHost *:80
BandWidth all 3072
MinBandWidth all 1024
</pre>
 
Assumendo la presenza delle precedenti direttive analizziamo i casi in base
alle connessioni:
* una connessione: velocità di trasferimento = 3072 Bytes/sec.
* due connessioni: velocità di trasferimento = 1536 Bytes/sec.
* tre o più connessioni: velocità di trasferimento = 1024 Bytes/sec.


<VirtualHost *:80>
Se<code>MinBandWidth</code> è impostato a <code>-1</code> accade che:
    ServerName repos.dominio.it
* se c'è solo una connessione, il file viene trasferito a 3072 Bytes/sec;
    DocumentRoot /var/lib/debarchiver
* se ci sono una o più connessioni, ogni file viene trasferito a 3072 Bytes/sec. La velocità non dipende più dal numero di connessioni, ma solo dai valori delle direttive.
    <Directory />
 
        Options Indexes FollowSymLinks
Ovviamente, la velocità di trasferimento totale non potrà mai superare la vostra larghezza di banda.
    </Directory>
</VirtualHost>
</pre>


ed abilitarlo (rimando alla documentazione ufficiale del proprio server web).
{{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva <code>BandWidth</code> sia uno impostato nella direttiva <code>LargeFileLimit</code>, verrà applicato il più piccolo (ma mai minore a quello eventualmente indicato nella direttiva <code>MinBandWidth</code>)}}


===Directory in un Dominio===
=== bw_mod ===
Questa configurazione � senza dubbio la pi� semplice. Si fa uso della direttiva '''Alias''' (Documentazione Ufficiale [http://httpd.apache.org/docs/1.3/mod/mod_alias.html Apache1.3] - [http://httpd.apache.org/docs/2.0/mod/mod_alias.html Apache2.0]) nel modo seguente:
In Apache2 la configurazione globale del server può essere separata da quella dei VHosts e delle Directory. Sono presenti, infatti, due file: <code>/etc/apache2/apache2.conf</code>, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio <code>httpd.conf</code>); e <code>/etc/apache2/sites-enabled/000-default</code>, in cui ci sono le direttive per VHosts e Directories (in realtà è un link simbolico al file <code>/etc/apache2/sites-available/default</code>).<br/>
Per poter, quindi, configurare il nostro ''bw_mod'', possiamo inserire le prime quattro direttive della seguente lista in <code>apache2.conf</code> come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in <code>apache2.conf</code>, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in <code>000-default</code> nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.<br/>
{{ Warningbox | Momentaneamente il modulo '''non supporta il sistema .htaccess''', quindi non è possibile inserire le direttive in questi file.<br/>
In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo ''mod_bandwidth'' dove è indicata la possibilità d'uso in .htaccess: con ''bw_mod'' non bisogna prendere in considerazione quei '''contesti'''.}}


Supponendo di voler rendere accessibile il repository in <nowiki>http://www.dominio.it/debian</nowiki> � sufficiente aggiungere, nella configurazione del VirtualHost in questione
==== '''Direttive globali''' ====
<pre>
===== <code>'''BandWidthModule'''</code> =====
Alias /debian /var/lib/debarchiver
'''Sintassi''': <code>BandWidthModule On|Off</code><br/>
</pre>
'''Default''': <code>Off</code><br/>
Tramite questa direttiva attiviamo o disattiviamo il modulo


{{Box|Nota:|per rendere ''sfogliabile'' il repository � consigliabile aggiungere, dopo la dichiarazione precedente, un pezzo di codice simile al seguente:
===== <code>'''BandWidthDebug'''</code> =====
<pre>
'''Sintassi''': <code>BandWidthDebug On|Off</code><br/>
<Directory /debian>
'''Default''': <code>Off</code><br/>
    Options Indexes FollowSymLinks
Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo).
</Directory>
</pre> [http://httpd.apache.org/docs/2.0/mod/core.html#options qui] sono disponibili maggiori dettagli a rigaurdo}}


==Server ftp==
===== <code>'''BandWidthPacket'''</code> =====
Come server ftp viene preso in considerazione [http://www.proftpd.org proftpd], visto che utilizza una configurazione molto simile a quella di Apache.
'''Sintassi''': <code>BandWidthPacket <Dimensione pacchetti in bytes></code><br/>
'''Default''': <code>8192</code><br/>
Questa direttiva indica la dimensione massima dei pacchetti trasferiti.<br/>
Solitamente, in una configurazione generica, non è necessario modificare questo valore. In caso si voglia ottimizzare la trasmissione dati (e soprattutto se si sa cosa si sa facendo), possono essere specificati valori tra 1024 e 131072.<br/>
In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi.


===Dominio di 3� livello===
===== <code>'''BandWidthError'''</code> =====
Un esempio di configurazione (da inserire all'interno di '''/etc/proftpd.conf''') per l'accesso al repository tramite il protocollo ftp:
'''Sintassi''': <code>BandWidthError <Num. Errore></code><br/>
<pre>
''' Default''': <code>none</code> (Vengono usati i valori standard di Apache2).<br/>
<VirtualHost repos.dominio.it>
In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con <code>''MaxConnection''</code>, con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <code><Num. Errore></code> ed eventualmente, mettendo mano alla direttiva <code>ErrorDocument</code> in <code>/etc/apache2/apache2.conf</code>, quale pagina deve essere mostrata.<br/>
  ServerName "Repository di dominio.it"
Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in <code>apache2.conf</code> la sezione con tutti gli errori che apache può restituire al browser).
  MaxClients 10
Se usiamo una pagina d'errore personalizzata, è importante che l'errore associato alla nostra pagina non sia già usato da apache (l'autore del modulo ha testato con successo l'errore numero 510).
  MaxLoginAttempts 1
Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere:
<pre>ErrorDocument 510 /errors/paginaerrore.html</pre>
nella direttiva <code>ErrorDocument</code> in <code>etc/apache2/apache2.conf</code>, e
<pre>BandWidthError 510</pre>
nella direttiva <code>BandWidthError</code>.


  DeferWelcome on
{{ Warningbox | Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: è opportuno, quindi, creare pagine più grandi di questo valore. }}


==== '''Direttive per la configurazione di Directory e/o VirtualServer''' ====


  <Limit LOGIN>
===== <code>'''ForceBandWidthModule'''</code> =====
    DenyAll
'''Sintassi''': <code>ForceBandWidthModule On|Off</code><br/>
  </Limit>
'''Default''': <code>On</code><br/>
Di default, naturalmente, il modulo processerà e applicherà i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali file debbano essere soggetti alla limitazione di banda, si può settare questa direttiva su <code>''off''</code>, aggiungendo, poi, i tipi di file cui deve essere applicato il limite:
<pre>ForceBandWidthModule Off
AddOutputFilterByType BW_MOD text/html text/php</pre>


  <Directory />
===== <code>'''BandWidth'''</code> =====
    <Limit WRITE DIRS>
'''Sintassi''': <code>BandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/>
      DenyAll
'''Default''': <code>all 0</code><br/>
    </Limit>
Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''.
  </Directory>
</Anonymous>
</VirtualHost>
</pre>


=Gestione del Repository=
===== <code>'''MinBandWidth'''</code> =====
==Upload dei pacchetti==
'''Sintassi''': <code>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/>
� utile ricordare che esistono dei tool per eseguire correttamente l'upload dei pacchetti.
'''Default''': <code>all 0</code><br/>
Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''.


� necessario, infatti, seguire una procedura particolare: il sistema utilizza i file con estensione ''changes'' come file di lock. Quando si caricano dei pacchetti, il file .changes deve essere l'ultimo ad essere caricato. L'analisi dei pacchetti, infatti, verr� eseguita solo quando questo file sar� presente.
===== <code>'''LargeFileLimit'''</code> =====
'''Sintassi''': <code>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></code><br/>
'''Default''': <code>none</code><br/>
Con questa direttiva possiamo indicare un limite di trasferimento <code><Limite in bytes/s></code> per un determinato tipo di file <code><Tipo di file></code> che abbia la dimensione minima indicata con <code><dimensione minima del file in KB></code>.
Il parametro <code><Tipo di file></code> viene espresso con l'estensione del file (p.e. <code>''.avi''</code>, <code>''.exe''</code>, <code>''.tgz''</code>); si può usare il carattere jolly <code>''*''</code> per indicare ogni tipo di file.
La <code><Dimensione minima file in KB></code>, come scritto, viene indicata in kilobytes.
Il <code><Limite in bytes/s></code> indica la velocità massima alla quale verranno trasferiti i files interessati da questa direttiva.
Per esempio, con:
<pre>LargeFileLimit .avi 500 10240</pre>
diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovrà applicare uua velocità massima di trasferimento di 10kb/s.


I tool disponibili sono:
===== <code>'''MaxConnection'''</code> =====
* [[Dupload per l'upload dei pacchetti Debian | Dupload ]]
'''Sintassi''': <code>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></code><br/>
* dput
'''Default''': <code>all 0</code> (Illimitate da ogni origine).<br/>
Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi è simile alla direttiva <code>''BandWidth''</code>. Le connessioni eccedenti il limite riceveranno l'errore impostato in <code>''BandWidthError''</code> (di default è il 503).
{{ Warningbox | Affinchè il limite di connessioni per una data origine possa essere applicato, è necessario che quella origine abbia anche una limitazione di banda specificata con <code>''BandWidth''</code>.<br/>
Quindi, se vogliamo limitare le connessioni provenienti da 192.168.2.0 con
<pre>MaxConnection 192.168.2.0 20</pre>
è fondamentale che il traffico con quella specifica rete sia indicato in
<pre>BandWidth 192.168.2.0 0</pre>
Come si può vedere, è una semplice questione di forma: infatti si può tranquillamente indicare come limite <code>''0''</code>, quindi infinito. L'importante è che sia specificato in <code>BandWidth</code>.}}


==Rimozione di uno o pi� pacchetti==
=== mod_bwshare ===
Debarchiver non supporta la rimozione automatizzata di uno o pi� pacchetti, operazione che dovr� essere compiuta, quindi, a mano.


Supponendo di avere un pacchetto di nome ''kpakketto'' dovremo seguire questa procedura:
== Conclusione ==
* Eliminazione manuale di tutte le occorrenze di ''kpakketto'': <pre> # rm -f `find /var/lib/debarchiver/dists/ -iname "kpakketto*"`</pre>
* Ricostruzione del repository: <pre>$ su debarchiver -c "debarchiver -so --autoscanall --dl 6" </pre>


Con questi moduli è possibile, in breve tempo e con la massima semplicità,
ottimizzare la ripartizione della banda del proprio server web. Cosa
fondamentale per non arrivare alla saturazione della banda, che
comporterebbe lentezza nelle risposte dei vari servizi e della navigazione su
internet.


=Conclusione=
{{Autori
Debarchiver offre un comodo e funzionale strumento per la gestione automatizzata di un repository Debian di tutto rispetto. Inoltre implementa correttamente la struttura di un repository Debian... una scelta obbligata, insomma, quando si devono gestire un numero di pacchetti maggiore di 3-4 senza dover preoccuparsi delle vecchie versioni (che vengono automaticamente rimosse). Inoltre la flessibilit� e la possibilit� di avere pi� suddivisioni (oltre alle classiche ''stable'', ''testing'' e ''unstable'') lo rende perfetto per repository particolari (per i backport, ad esempio).
|Autore = [[User:MaXeR|MaXeR]]
|Estesa_da=  
:[[User:Soter|Soter]]
}}


[[Categoria:Server]][[Categoria:Repository]]
[[Categoria:Web server]]
[[Categoria:Ottimizzazione del sistema]]

Versione attuale delle 19:18, 3 nov 2019

Guida da adottare! Bannermv.png



Introduzione

Questo articolo affronta il problema della gestione della banda in Apache (Ver. 1 e Ver. 2), mostrando come installare e configurare tre diversi moduli utilizzabili a tale fine:

mod_bandwidth

bw_mod

mod_bwshare

Installazione

mod_bandwidth

Il modulo mod_bandwidth è installato di default insieme al server apache; lo possiamo trovare in /usr/lib/apache/1.3/. Se questo modulo dovesse dare problemi (esempi: non imposta correttamente la banda, ma sembra che i limiti che impostiamo siano visti come bit e non come byte, non accetta la direttiva MaxConnection), vi consiglio di reinstallarlo come descritto qui sotto.

ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c).

  • per poter compilare questo modulo, abbiamo bisogno del pacchetto apache-dev. Per installarlo è sufficiente dare:
# apt-get install apache-dev
  • ora siamo pronti per compilare:
$ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth.so
  • una volta pronto il modulo, eseguiamo i seguenti comandi:
# cd /usr/lib/apache/1.3/
# mv mod_bandwidth.so mod_bandwidth.so.bk
# mv /home/maxer/mod_bandwidth.so ./

in questo modo abbiamo creato una copia del modulo precedente, se presente, e poi abbiamo spostato il modulo appena compilato nella cartella dei moduli di apache.


Aggiornamento

Il procedimento appena presentato, crea diversi problemi, soprattutto in fase di aggiornamento del sistema: ogni volta il pacchetto apache viene aggiornato, infatti, il modulo appena creato verrà sovrascritto con quello "vecchio", e apache non si riavvierà. Una alternativa è creare il modulo con un altro nome:

$ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth_new.so
# cp mod_bandwidth_new.so /usr/lib/apache/1.3/mod_bandwidth_new.so
# cd /usr/lib/apache/1.3/
# cp 500mod_bandwidth.info 500mod_bandwidth_new.info

Ora bisogna modificare il file 500mod_bandwidth_new modificando il nome del vecchio modulo con quello nuovo:

LoadModule: bandwidth_module /usr/lib/apache/1.3/mod_bandwidth-new.so
Description: Bandwidth management on a per-connection basis

Ora è necessario modificare il file /etc/apache/modules.conf: la nuova direttiva da inserire, sostituendo eventualmente quella preesistente, è la seguente:

LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth_new.so

bw_mod

Come prima cosa procuriamoci il modulo dal sito dello sviluppatore. A questo punto estraiamolo:

# tar vzxf bw_mod-6.0.tgz

spostiamoci nella cartella appena creata (bw_mod-6.0.tgz) e verifichiamo che sia presente il file bw_mod-6.0.c.

Ora, per poter compilare il nostro modulo, ci servono gli strumenti per farlo: nel nostro caso dovremo installare, tramite apt-get, il pacchetto apache2-dev:

# apt-get install apache2-dev

Bene, ora compiliamo tramite il comando /usr/bin/apsx2:

# /usr/bin/apxs2 -i -a -c bw_mod-0.6.c

Se non ci sono errori, possiamo procedere. Alla fine della compilazione sono state automaticamente aggiunte queste righe al file /etc/apache2/httpd.conf:

Include /etc/apache2/sysconfig.d/loadmodule.conf
LoadModule bw_module /usr/lib/apache2/bw_mod-0.6.so
Info.png Nota
Apache2 usa come file di configurazione /etc/apache2/apache2.conf; tuttavia, per retrocompatibilità, è presente anche un file /etc/apache2/httpd.conf in cui vengono inseriti solitamente gli "includes" dei moduli di terze parti laddove questi non usino il sistema mods-available/mods-enabled.

In questo caso non dobbiamo preoccuparci, in quanto nel file apache2.conf c'è un richiamo a httpd.conf.


mod_bwshare

Ancora da scrivere

Configurazione

mod_bandwidth

Ora configuriamo apache per utilizzare mod_bandwidth.
Aggiungiamo il modulo al file /etc/apache/modules.conf. Per fare questo abbiamo due possibilità:

  • modificare a mano il file, aggiungendo la seguente riga, alla fine del file:
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so
  • utilizzare modules-config>:
modules-config apache enable mod_bandwidth

Creiamo le cartelle temporanee per mod_bandwidth:

# mkdir /tmp/apachebw
# mkdir /tmp/apachebw/master
# mkdir /tmp/apachebw/link
# chown -R www-data:www-data /tmp/apachebw
# chmod -R 775 /tmp/apachebw

(ricordiamoci che è possibile che qualche script ripulisca la directory /tmp, quindi cambiamo la posizione di queste cartelle con la direttiva BandWidthDataDir).

Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione:

# /etc/init.d/apache reload

Note per il corretto funzionamento

Per ottenere risultati, è importante che non ci siano dei link morti nella directory link di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo.

Potrebbe essere una buona idea, a questo scopo, eseguire lo script cleanlink.pl, che provvede a rimuovere automaticamente i link morti.


Direttive globali di configurazione

BandWidthDataDir

Sintassi: BandWidthDataDir <directory>
Default: /tmp/apachebw
Contesto: server config
Imposta la directory in cui mod_bandwidth conserve i suoi file temporanei. All'interno di questa directory devono essere presenti anche le directory link e master; tutte queste cartelle devono essere scrivibili da apache (che in Debian utilizza l'utente ed il gruppo www-data).


BandWidthModule

Sintassi: BandWidthModule <On|Off>
Default: Off
Contesto: per server config
Abilita o disabilita il modulo.

Info.png NOTA:
Per utilizzarlo all'interno di un virtual host, è necessario inserire la direttiva BandWidthModule On all'interno del blocco del virtual host. Se viene attivato globalmente (cioè all'interno del file httpd.conf, fuori da ogni blocco), il modulo è attivo automaticamente in tutti i sottoblocchi (Virtual Host, etc).


BandWidthPulse

Sintassi: BandWidthPulse <microseconds>
Default:
Contesto: per server config

Modifica l'algoritmo usato per calcolare la larghezza di banda e per trasmettere i dati. Nella modalità normale (obsoleta), il modulo cerca di tramettere i dati in pacchetti di 1Kb. Questo vuol dire che, se la banda disponibile è di 512B, il modulo trasmette 1Kb, aspetta 2 secondi, trasmette 1Kb e così via. Impostando questa direttiva, verrà cambiato l'algoritmo in modo che il server aspetterà sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varierà di conseguenza, così da rispettare i criteri indicati nelle altre direttive. Il valore è in microsecondi.

Esempio:

BandWidthPulse 1000000 #1 secondo

Se oltre a questa direttiva è presente un limite a 512B, il server trasmetterà 512B, aspetterà un secondo, trasmetterà 512B, aspetterà un secondo e così via.


Direttive per la configurazione di Directory e/o VirtualServer

BandWidth

Sintassi: BandWidth <domain|ip|all> <rate>
Default: none
Contesto: per directory, .htaccess

Limita la banda per i file contenuti nella directory e nelle sub-directory, in base alla provenienza (dominio, ip, all). Gli indirizzi IP possono essere specificati anche nel formato network/netmask (Es: 192.168.0.0/21) <rate> deve essere espresso in Byte/secondo. Impostato a 0 indica nessun limite di banda. Possono essere impostati più limiti per la stessa directory; in questo caso, è importante l'ordine con cui vengono inserite le direttive, in quando mod_bandwidth li scorre dal primo all'ultimo, fermandosi a quello che rispecchia la situazione.

Esempio:

BandWidth ecp.fr 0
BandWidth 138.195 0
BandWidth all 1024

In questo esempio, viene limitata la banda a:

  • nessun limite per gli appartenenti al dominio .ecp.fr e alla rete 138.195. ;
  • 1024Bytes/secondo per tutti gli altri.


LargeFileLimit

Sintassi: LargeFileLimit <filesize> <rate>
Default: none
Contesto: per directory, .htaccess

Imposta un limite <rate> da usare quando si trasferiscono file di dimensioni uguali o maggiori a <filesize>. È possibile utilizzare più direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a 0, non sarà impostato alcun limite (rimarrà, ovviamente, l'eventuale limite impostato in BandWidth). Se viene impostato a -1, invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva BandWidth) per i file la cui dimensione rispecchia quella direttiva.

Esempio:

LargeFileLimit 200 3072
LargeFileLimit 1024 2048

Queste direttive portano a questa situazione:

  • i file più piccoli di 200Kb, non verranno limitati da queste direttive (rimane attiva la direttiva BandWidth);
  • i file di dimensione compresa tra 200Kb e 1023Kb, saranno limitati a 3072Kb/sec;
  • i file di dimensione maggiore di 1024Kb, saranno limitati a 2048Kb/sec.


MaxConnection

Sintassi: MaxConnection <connections>
Default: 0 (illimitate)
Contesto: per directory, .htaccess

Imposta il numero di connessioni massime che possono avvenire contemporaneamente. Una volta raggiunto il limite impostato, le nuove connessioni verranno rifiutate. Se impostato a 0 (valore di default) non saranno presenti delle limitazioni per quanto riguarda il numero di connessioni simultanee (se non quello impostato nelle direttive principali di Apache).


MinBandWidth

Sintassi: MinBandWidth <domain|ip|all> <rate>
Default: all 256
Contesto: per directory, .htaccess

Imposta una banda minima per il trasferimento dei dati. Questa direttiva può sovrascrivere le direttive BandWidth e LargeFileLimit, in quanto, in presenza di un numero elevato di connessioni, verrà garantita a tutte la larghezza indicata con questa direttiva, anche se il totale supererà i limiti. Il primo argomento è da usarsi come per la direttiva BandWidth. Deve essere espresso in Byte/Secondo; se viene impostato a 0, verrà usato il valore di default (256).

Esempio :

BandWidth all 3072
MinBandWidth all 1024

Assumendo la presenza delle precedenti direttive analizziamo i casi in base alle connessioni:

  • una connessione: velocità di trasferimento = 3072 Bytes/sec.
  • due connessioni: velocità di trasferimento = 1536 Bytes/sec.
  • tre o più connessioni: velocità di trasferimento = 1024 Bytes/sec.

SeMinBandWidth è impostato a -1 accade che:

  • se c'è solo una connessione, il file viene trasferito a 3072 Bytes/sec;
  • se ci sono una o più connessioni, ogni file viene trasferito a 3072 Bytes/sec. La velocità non dipende più dal numero di connessioni, ma solo dai valori delle direttive.

Ovviamente, la velocità di trasferimento totale non potrà mai superare la vostra larghezza di banda.

Info.png NOTA:
Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva BandWidth sia uno impostato nella direttiva LargeFileLimit, verrà applicato il più piccolo (ma mai minore a quello eventualmente indicato nella direttiva MinBandWidth)


bw_mod

In Apache2 la configurazione globale del server può essere separata da quella dei VHosts e delle Directory. Sono presenti, infatti, due file: /etc/apache2/apache2.conf, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio httpd.conf); e /etc/apache2/sites-enabled/000-default, in cui ci sono le direttive per VHosts e Directories (in realtà è un link simbolico al file /etc/apache2/sites-available/default).
Per poter, quindi, configurare il nostro bw_mod, possiamo inserire le prime quattro direttive della seguente lista in apache2.conf come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in apache2.conf, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in 000-default nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.

Warning.png ATTENZIONE
Momentaneamente il modulo non supporta il sistema .htaccess, quindi non è possibile inserire le direttive in questi file.

In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo mod_bandwidth dove è indicata la possibilità d'uso in .htaccess: con bw_mod non bisogna prendere in considerazione quei contesti.


Direttive globali

BandWidthModule

Sintassi: BandWidthModule On|Off
Default: Off
Tramite questa direttiva attiviamo o disattiviamo il modulo

BandWidthDebug

Sintassi: BandWidthDebug On|Off
Default: Off
Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo).

BandWidthPacket

Sintassi: BandWidthPacket <Dimensione pacchetti in bytes>
Default: 8192
Questa direttiva indica la dimensione massima dei pacchetti trasferiti.
Solitamente, in una configurazione generica, non è necessario modificare questo valore. In caso si voglia ottimizzare la trasmissione dati (e soprattutto se si sa cosa si sa facendo), possono essere specificati valori tra 1024 e 131072.
In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi.

BandWidthError

Sintassi: BandWidthError <Num. Errore>
Default: none (Vengono usati i valori standard di Apache2).
In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con MaxConnection, con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <Num. Errore> ed eventualmente, mettendo mano alla direttiva ErrorDocument in /etc/apache2/apache2.conf, quale pagina deve essere mostrata.
Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in apache2.conf la sezione con tutti gli errori che apache può restituire al browser). Se usiamo una pagina d'errore personalizzata, è importante che l'errore associato alla nostra pagina non sia già usato da apache (l'autore del modulo ha testato con successo l'errore numero 510). Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere:

ErrorDocument 510 /errors/paginaerrore.html

nella direttiva ErrorDocument in etc/apache2/apache2.conf, e

BandWidthError 510

nella direttiva BandWidthError.

Warning.png ATTENZIONE
Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: è opportuno, quindi, creare pagine più grandi di questo valore.


Direttive per la configurazione di Directory e/o VirtualServer

ForceBandWidthModule

Sintassi: ForceBandWidthModule On|Off
Default: On
Di default, naturalmente, il modulo processerà e applicherà i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali file debbano essere soggetti alla limitazione di banda, si può settare questa direttiva su off, aggiungendo, poi, i tipi di file cui deve essere applicato il limite:

ForceBandWidthModule Off
AddOutputFilterByType BW_MOD text/html text/php
BandWidth

Sintassi: BandWidth <Origine della connessione> <Limite di banda in bytes/s>
Default: all 0
Vedi BandWidth del mod_bandwidth.

MinBandWidth

Sintassi: MinBandWidth <Origine della connessione> <Limite di banda in bytes/s>
Default: all 0
Vedi MinBandWidth del mod_bandwidth.

LargeFileLimit

Sintassi: LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s>
Default: none
Con questa direttiva possiamo indicare un limite di trasferimento <Limite in bytes/s> per un determinato tipo di file <Tipo di file> che abbia la dimensione minima indicata con <dimensione minima del file in KB>. Il parametro <Tipo di file> viene espresso con l'estensione del file (p.e. .avi, .exe, .tgz); si può usare il carattere jolly * per indicare ogni tipo di file. La <Dimensione minima file in KB>, come scritto, viene indicata in kilobytes. Il <Limite in bytes/s> indica la velocità massima alla quale verranno trasferiti i files interessati da questa direttiva. Per esempio, con:

LargeFileLimit .avi 500 10240

diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovrà applicare uua velocità massima di trasferimento di 10kb/s.

MaxConnection

Sintassi: MaxConnection <Origine delle connessioni> <Num. massimo connessioni>
Default: all 0 (Illimitate da ogni origine).
Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi è simile alla direttiva BandWidth. Le connessioni eccedenti il limite riceveranno l'errore impostato in BandWidthError (di default è il 503).

Warning.png ATTENZIONE
Affinchè il limite di connessioni per una data origine possa essere applicato, è necessario che quella origine abbia anche una limitazione di banda specificata con BandWidth.

Quindi, se vogliamo limitare le connessioni provenienti da 192.168.2.0 con

MaxConnection 192.168.2.0 20

è fondamentale che il traffico con quella specifica rete sia indicato in

BandWidth 192.168.2.0 0

Come si può vedere, è una semplice questione di forma: infatti si può tranquillamente indicare come limite 0, quindi infinito. L'importante è che sia specificato in BandWidth.


mod_bwshare

Conclusione

Con questi moduli è possibile, in breve tempo e con la massima semplicità, ottimizzare la ripartizione della banda del proprio server web. Cosa fondamentale per non arrivare alla saturazione della banda, che comporterebbe lentezza nelle risposte dei vari servizi e della navigazione su internet.




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Soter
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized