awstats e squid3

Utilizzo squid3 come frontend ai miei siti web. Il server web e’ ovviamente apache2. La gestione delle statistiche e’ affidata a awstats.
Per fare in modo che awstats registri correttamente le statistiche , e’ importante modificare il file apache2.conf in modo da sostituire nelle righe di log l’host fornito da apache2 con l’informazione inviata da squid per indicare la presenza di un proxy:

X-Forwarded-For

in pratica nelle tre righe di LogFormat dove e’ presente il parametro %h va messo %{X-Forwarded-For}i

LogFormat “%v:%p mkdir %{X-Forwarded-For}i %l %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”" vhost_combined
LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”" combined
LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %O” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent

fonte: apache2.conf

Posted in Debian, http, logging, proxy, service | Tagged , , , , | Leave a comment

ulimit definitivo

la forza, joe, ricordati la forza e soprattutto ricordati i file di configurazione.

modificare le impostazioni di ulimit e renderle definitive per il sistema richiede solo di mettere le mani in /etc/security/limits.conf.

un esempio:

dovecot soft nofile 20000
dovecot hard nofile 30000

certo, nei forum c’e’ gente che ti dice che una volta modificato il file, il sistema andrebbe riavviato…. ma io sono purista, non riavvio praticamente mai, soprattutto se ci tengo alla vita.
per passare il parametro, stoppo il servizio che mi serve, uso ulimit e riavvio….

ulimit, utilizza un meccanismo simile:

intanto deve essere impostato nell’utente che usa il servizio:

su  - dovecot

ulimit -Sn 25000

ulimit -Hn 30000

 

Posted in Uncategorized | Tagged , , | Leave a comment

dovecot vs courier: INBOX

Solo una nota trovata su un forum che mi ha risolto al volo un problema tecnico.

Premetto che sono passato dal courier-imap a dovecot.

Immediatamente tutti gli utenti hanno lamentato il fatto che prima vedevano le loro cartelle sotto “posta in arrivo”. Ora le vedono allo stesso livello.

Cercando al volo ho risolto l’inghippo modificando la sezione relativa ai “namespace” inserendo / modificando cio:

namespace private {
separator = '.'
prefix = INBOX.
inbox = yes
hidden = no
list = yes
subscriptions = yes
}

riferimenti:

http://forums.cpanel.net/f145/dovecot-prefix-create-folders-inbox-level-169742.html

Posted in Debian, mail, service, Uncategorized | Tagged , , , , | Leave a comment

squid optimization hints

Alla ricerca del modo di incrementare le prestazioni dei nuovi server, ora e’ il turno di squid3.
Sto cercando di usare come frontend squid3 in modo da alleggerire il carico sugli apache e contemporaneamente gestire un bel numero di connessioni.

Cercando in rete ho trovato intanto alcune modifiche da fare alle impostazioni del tcp della macchina:

iniziamo aumentando il numero di porte locali disponibili per le connessioni.
il default e’ :
net.ipv4.ip_local_port_range = 32768 61000

portiamo al massimo:
sysctl -w net.ipv4.ip_local_port_range=”1024 64000″

http://www.cyberciti.biz/tips/linux-increase-outgoing-network-sockets-range.html

poi, aumentiamo il numero di tcp_max_syn_backlog, ovvero il numero di richieste SYN da tenere in memoria. il default e’ 1024.
il suggerimento e’ portarle a 8196.

aumentiamo le dimensioni dello stack per l’utente:

ulimit -HSn 16384 (inserito in rc.local)

in ultimo le modifiche da fare a squid trovate a questo link:

http://www.mydlp.com/squid3-optimization-tips/

una nota in particolare:
alcuni dei parametri indicati sono gia’ il default e quindi si possono anche non toccare.
interessante la modalita’ di gestione della cache che passa da ufs a diskd. Piccolo aggiornamento: leggo su diversi siti che aufs e’ meglio di ufs e diskd. ora va in servizio. : ho notato che aufs e’ un po’ peggio di diskd….. rimettiamo le cose a posto.

altra nota:

ho notato un certo consumo di memoria forse un po’ eccessivo.

ho abbassato una serie di parametri:

la dimensione della cache su disco: da 16Gb a 8Gb.

cache_mem: da 2048Mb a 1024Mb

maximum_object_size_in_memory 8192 Kb

maximum_object_size: da 2048Mb a 1024Mb

memory_pool: da 2048Mb a 1024Mb

riconfigurando squid ho notato una certa diminuzione nel consumo della memoria…. nei prossimi giorni vediamo anche quanto ci perdo o guadagno nelle prestazioni.

 

 

Posted in linux, proxy, Uncategorized | Tagged , , , , | Leave a comment

Da Courier a Dovecot.

premessa: non ho nulla contro Courier. Un prodotto valido e funzionale, semplice da configurare e potente. Ma come tutte le cose, ogni tanto si deve cambiare.

Scenario:

debian 6.x 64 bit stable

tutto rigidamente pacchettizzato, tranne qualche webmail come Roundcube.

courier-imap e pop, courier-authdaemond gestiti attraverso mysql.

mysql come db di backend per gli utenti e le relative configurazioni.

in primis: installiamo dovecot. in condizioni normali dovecot va a sostituire courier, cosa che nel mio caso non era possibile fare. Ho optato per una normalissima macchina virtuale dove fare tutti i test.

Dicevo, installiamo dovecot nei suoi pacchetti:

dovecot-imapd

dovecot-pop3d

all’interno della directory /etc/dovecot troveremo i file su cui andare a mettere le mani.

di seguito elenco le modifiche che ho attivato per i miei servizi:

agilitare i protocolli:

protocols = imap pop3

ovviamente si puo’ inserire imaps e pop3s.

abilitare la registrazione dei log su mail:

syslog_facility = mail

una piccola nota: ho l’abitudine di modificare il file rsyslog.conf in modo da evitare la ripetizione dei messaggi in diversi canali di log (come per esempio, i messaggi di mail li ritrovo oltre in /var/log/mail anche in /var/log/messages e via discorrendo). Modificando l’opzione di dovecot forzo l’inoltro dei suoi messaggi solo su cio’ che riguarda il canale di mail.

disable_plaintext_auth = no
mail_location = mildir:/home/xxxx/Maildir
mail_nfs_storage = yes
mail_nfs_index = yes

queste due opzioni sono necessarie se lo storage viene pescato usando nfs.

queste opzioni richiedono che mmap venga disabilita:

mmap_disable = yes
first_valid_uid = 103 (nel mio caso)
last_valid_uid = 103

verificare che l’id minimo accettato sia almeno quello con cui abbiamo memorizzato la posta

auth default: mechanism = plain login #digest-md5 cram-md5

questo schema e’ collegato alla voce “default_pass_scheme”. Utilizzando MD5 che normalmente e’ il modo in cui vengono memorizzate gli hash delle password, md5-digest e md5-cram non funzionano.

auth default: passdb sql : args = /etc/dovecot/dovecot-sql.conf
auth default: userdb sql: args = /etc/dovecot/dovecot-sql.conf

a questo punto passiamo a dare un’occhiata a dovecot.conf

ci sono due sezioni che vanno prese in considerazione:

la zona relativa al passdb che contiene le password e userdb che contiene la locazione della posta.

intanto:

driver = mysql
connect = host=ilnostroserversql dbname=ilnomedeldb user=lutente password=velodevoanchedire?
default_pass_scheme = MD5

Questa opzioni registra la modalita’ con cui le password sono memorizzate. Di default va bene MD5, ma dipende da cio’ che e’ inserito nel DB. Fare riferimento alla modalita’ di autenticazione che e’ strettamente legata alla modalita’ di storage della password.

a questo punto dobbiamo costruire le query necessarie per accedere all’informazioni che ci necessitano:

password_query = select ...
user_query = select ...

non sto’ a specificare lo schema di accesso, perche’ se avete installato postfix/mysql in precedenza sapete meglio di me come operare. L’importante e’ seguire gli esempi forniti nel file di configurazione. e’ infatti importante, rispetto alla query da noi utilizzata, assegnare i nomi esatti voluti da dovecot.

come al solito, ritorna estremamente utile la lettura dei log. molti piccoli errori si possono analizzare e verificare provando da un client e contemporaneamente tenendo gli occhi sul classico tail -f /var/log/mail.log

autenticazione smtp:

molto probabilmente, con l’installazione di courier e’ stata usata l’autenticazione dell’smtp direttamente sul supporto authdaemond di courier.

le modifiche da fare sono poche:

in /etc/postfix/sasl/smpt.conf, le voci sono:

pwcheck_method: saslauthd
log_level: 10
mech_list: plain login 
#cram-md5 digest-md5
saslauthd_path:/var/run/postfix/var/run/saslauthd/mux

in /etc/default/saslauthd un piccolo aggiornamento deve essere previsto:

alla riga OPTIONS: “-c -m /var/run/postfix/var/run/saslauthd” va aggiunta l’opzione -r.

in mancanza di questa opzione, sasl passa solo la parte nome al server imap dimenticando di indicare il dominio causando la mancata autenticazione.

 

Posted in mail | Tagged , , | Leave a comment

linux, reboot d’urgenza

Ho un caro amico che ha un server in housing.
Il server ha avuto un po’ di casini causa isp.
Ora, da remoto, se la macchina inizia ad avere seri e reiterati problemi, riavviare la baracca puo’ diventare difficoltoso se non impossibile.
Sorvolo sul fatto che se una macchina lnux diventa instabile c’e’ qualche altro problema…. ma intanto mettiamo mano all’urgenza.
Il pinguino, come al solito ci viene incontro, e se abbiamo quel tanto di console ssh possiamo fare un bel:

echo b > /proc/sysrq-trigger

per avere la certezza che questo comando funzioni dobbiamo accertarsi che /proc/sys/kernel/sysrq contenga un bel 1 con un bel cat. Nel caso non lo fosse:

echo 1 > /proc/sys/kernel/sysrq

Occhio che questo e’ l’equivalente di staccare e riattaccare la spina, pertanto se la macchina sta’ scrivendo grosse quantita’ di dati sui dischi rischiate di trovare la segatura al posto della partizione.

 

Posted in Uncategorized | Tagged , , | Leave a comment

persistent connection

non essendo possibile forzare a priori la connessione persistente tra mysql e php, sto verificando – soprattutto nei siti con prodotti standard – quale meccanismi mettere in piedi per ottenere il risultato voluto.

WordPress:
modificare wordpress e’ semplicissimo.
si prende il file wp-incudes/wp-db.php, si cercano le due righe mysql_connect e si sostituiscono con mysql_pconnect.

fonte: http://thecustomizewindows.com/2012/02/mysql-persistent-connection-to-optimize-wordpress/

Magento:
gia’ di suo, Magento e’ un prodotto particolarmente complesso e ansioso di risorse.

app/etc/local.xml

<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[root]]></username>
<password><![CDATA[root]]></password>
<dbname><![CDATA[magento]]></dbname>
<active>1</active>
<persistent>1</persistent>
</connection>

fonte: http://www.yireo.com/blog/1413-mysql-persistent-connection-in-magento

La maggior parte dei siti dove si parla di connessione, indica che non si rilevano apprezzabili differenze di prestazioni, pero’ non si parla mai di impostazioni e connessioni disponibili.
Mysql viene impostato per aprire un certo numero di connessioni che ovviamente occupano memoria e tempo macchina. Le connessioni persistenti, perlomeno, consentono di mantenere questo numero basso e gia’, secondo me, questo e’ un buon vantaggio.

Posted in Uncategorized | Leave a comment

mdnsadv e modello di mac esportato

sul nostro Mac, e’ fichissimo vedere nel Finder quali macchine sono state rilevate attraverso la rete.

al di la’ delle macchine windows, che in buona sostanza non ce ne frega nulla, quello che potrebbe essere simpatico e’ come presentare la nostra macchina BSD (che fa da file server d time machine) ai mac collegati.

la cosa e’ piuttosto semplice, anzi, direi banale.

si tratta di prendere il nostro file mdnsadv.conf e modificarlo.

prendiamo il file in questione, apriamolo e aggiungiamo la riga (subito sopra la riga sys):

baratro# cat mdnsadv.conf
 Scaficchio AFP Server
 _afpovertcp._tcp
 548
 title="Scaficchio File Server"
 _adisk._tcp
 9
 _device-info._tcp
 0
 model=Xserve
 sys=waMA=00:22:4d:7a:f7:9f,adVF=0x100
 dk2=adVF=0x83,adVN=Backup

i riferimenti al modello da inserire piu’ altre informazioni utili le potete trovare anche qua:

http://fuh.no-ip.biz/category/ht/ht_macos/ht_macos_general/

http://netatalk.sourceforge.net/3.0/htmldocs/afp.conf.5.html

http://simonwheatley.co.uk/2008/04/avahi-finder-icons/

http://mybookworld.wikidot.com/forum/t-242859

devo riconoscere che in questo momento non riesco a far funzionare la cosa…. ma prima o poi ci arrivo. Stay tuned!

Posted in Uncategorized | Leave a comment

freebsd, afp e time machine

Chi ha un mac conosce benissimo il simpatico e utilissimo tool chiamato Time Machine.

Quest’applicazione automatizza e rende perfino simpatico il backup del mac garantendo un meccanismo di salvataggio differenziale facilmente utilizzabile.

Di base questo sistema puo’ essere utilizzazione se si dispone di un disco esterno formattato per mac o di un Airport a cui e’ collegato l’ennesimo disco.

Inoltre, sullo stesso disco e’ possibile inserire i backup di piu’ macchine, crearsi aree personali e via disquisendo.

Freebsd, un po’ di pazienza e il divertimento che puo’ dare il compilatore, consent di ottenere gli stessi risultati con costi decisamente piu’ bassi.

sul mac ci servono due cose compilate dai ports.

netatalk: – net/netatalk – protocollo di rete mac (in fase di compilazione va’ disattivata l’opzione “zeroconf” e ovviamente tenuta abilita l’opzione “AppleTalk”).

mdnsresponder: – net/mDNSresponder- un demone che si occupa di gestire il dns via Multicast, ovvero consente a una macchina di annunciare in rete le proprie funzionalita’.

compilato il tutto, passiamo alle configurazioni in /etc/rc.conf:

netatalk_enable="YES"
cnid_metad_enable="YES"
afpd_enable="YES"
mdnsadv_enable="YES"

le prime tre righe riguardano netatalk, mentre l’ultima riguarda mdns.

passiamo poi alle configurazioni di rito in /usr/local/etc

AppleVolume.default: contiene le aree condivise in rete: nel mio caso ho condiviso solo due spazi: quello personale e l’area destinata a TimeMachine:

~
/home/TM TimeMachine allow:mauro options:usedots,tm

la prima voce, la tilde, indica che deve essere condivisa l’home dell’utente che si collega. Io ho creato due utenti, dotati di password, pertando le due directory saranno visibili quando si collega l’utente selezionato.

L’altra voce (/home/TM…) mette a disposizione dell’utente mauro (solo mauro) l’area destinata ai backup (vedi options: usedots,tm – in particolare ‘tm’ che indica che l’area serve a timemachine).

anziche’ usare avahi, (che dopo un po’ di esperimenti mi ha fatto girare largamente le balls), ho installato l’mdns di cui sopra con il seguente file di configurazione:

baratro# cat mdnsadv.conf

AFP Server
_afpovertcp._tcp
548
title="Scaficchio File Server"

TM Server
_adisk._tcp
9
sys=waMA=00:22:4d:7a:f7:9f,adVF=0x100
dk0=adVF=0x83,adVN=Backup

la prima riga indica il nome del mio server, il quale annuncia (da riga 2 a riga 6) il protocollo AFP sulla porta 548, e il protocollo _adisk sulla porta 9

le ultime due righe indicano il macaddress della macchina che esporta questi servizi (sys=waMA=00:22:4d….) e altri parametri che devo ancora capire (ho cercato qualche riferimento e ho trovato questo:

http://www.dreness.com/blog/?p=48

ma in realta’ si trova diversa roba che andro a vedere dopo la pennica pomeridiana.

.

infine, creo uno script adeguato:

#!/bin/sh
 # PROVIDE: mdnsadv
 # REQUIRE: LOGIN mdnsd
 #
 # Add the following lines to /etc/rc.conf to enable the mDNSResponder service advertising:
 #
 # mdnsadv_enable="YES"
 . /etc/rc.subr
 name="mdnsadv"
 rcvar=${name}_enable
 command="/usr/local/bin/mDNSResponderPosix"
 load_rc_config $name
 : ${mdnsadv_enable="NO"}
 command_args="-f /usr/local/etc/mdnsadv.conf > /dev/null 2>&1 &"

in rc.d dandogli poi gli attributi di esecuzione.

Avviati tutti i servizi, ultima cosa da fare e’ aprire una console su mac e dando un bel sudo, digitare il seguente comando:

"defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1″

Possiamo a questo punto definire nel mac, l’unita’ dove fare i backup e dove mettere e/o condividere i propri dati.

Per ottenere questo risultato, ho usato e sommato due siti diversi che usavano due approcci lievemente differenti:

http://www.aisecure.net/2011/08/02/freebsd-and-os-x-lion-time-machine/

e

http://blogs.freebsdish.org/rpaulo/2008/10/04/apple-time-machine-freebsd-in-14-steps/

https://wiki.archlinux.org/index.php/Netatalk

http://www.aisecure.net/2011/08/02/freebsd-and-os-x-lion-time-machine/

 

 

 

Posted in Uncategorized | 1 Comment

ottimizziamo

siamo come al solito punto e daccapo. Serve svegliare – aka spremere – un’altro po’ i server web sotto la mia gestione.

per logica cerco di suddividere il lavoro sui diversi fronti che le macchine si trovano a gestire.

Disco:

Secondo quanto ho trovato in giro, e’ importante aumentare il numero di file che il sistema puo’ aprire (in /proc/sys/fs/file-max ho un’impostazione pare a 100000 (http://www.netadmintools.com/part295.html). Questo valore puo’ benissimo essere inserito in sysctl sotto la voce: fs.file-max = 100000

sulla documentazione di gluster viene riportata una modifica al readahead sui dischi. Di default le macchine riportano il valore di 256. Per gluster consigliano 16384.

net134 (134):/etc/apache2# blockdev –getra /dev/sda
256
net134 (134):/etc/apache2# blockdev –setra 16384 /dev/sda

gestione della memoria dirty:

net134 (134):/etc/apache2# grep -A 1 dirty /proc/vmstat
 nr_dirty 2062
 nr_writeback 0

Sempre sul sito di gluster suggeriscono:

vm.dirty_background_ratio = 3
vm.dirty_ratio = 40

 

Apache2:
da tutte le parti si consiglia di attivare i meccanismi di cache di apache2. Era quello che avevo fatto (sia mem-disk che mem-cache cercando di capire chi era meglio. Tanto per la cronaca ero arrivato a far lavorare mem-disk su una partizione dedicata tmpfs). Purtroppo ho rilevato problemi con alcuni portali basati su wordpress. Una specie di corruzione degli header; teniamo in considerazione che su questi siti vengono usati pesantemente i permalink mentre senza la loro attivazione non abbiamo rilevato problemi di sorta.
Ora sono tornato senza.

KeepAliveTimeout: attualmente il timeout e’ fissato a 3. Sto monitorando attraverso le funzioni di status dei server quanto beneficio porta questo valore rispetto al valore di default (http://w3techie.com/2010/optimize-site-high-traffic/)

riferimenti:

http://blog.monitis.com/index.php/2011/07/05/25-apache-performance-tuning-tips/

Aggiornamenti:

ho allungato il keepAliveTimeout a 10, ho inoltre impostato il limite di MaxKeepAliveRequest a 10000; successivamente ho impostato la coda di attesa di evasione delle richiesta (listenbacklog) a 500.

Poi, sempre che c’ero: ho cercato di capire un po’ meglio il gioco della cache di apache tra cache su disco e cache in memoria tentando di unire i vantaggi di entrambe. Premesso che la cache in memoria (mem_cache) non viene condivisa tra le diverse sessioni pertanto a meno di uno intenso di un singolo demone in grado di sfruttare quanto messo da parte, si ottiene solo uno spreco di memoria senza un vantaggio effettivo sul carico generale, ho optato nell’uso di disk_cache.

Disk_cache ha il vantaggio di condividere la cache tra tutti i demoni attivi, quindi risparmio di memoria e maggiore efficienza nell’usare la stessa risorsa tra piu connessioni. Per ovviare alla lentezza di accessi continui al disco, ho usato un’area tmpfs dove far finire la cache stessa. Il vantaggio effettivamente si vede soprattutto su quei siti che hanno accessi continui.

nota:

mount -t tmpfs none –directory dove finisce la cache–

la voce –directory dove finisce la cache– corrisponde a quanto riportato nella configurazione del disk_cache (Apache su debian: CacheRoot /var/cache/apache2/mod_disk_cache).

 

Posted in disk, linux, Uncategorized | Tagged , , , | Leave a comment