Squid rallenta moltissimo con molti client connessi
Avendo dovuto collegare una filiale ad un proxy di un’altra filiale via MPLS mi sono trovato nella situazione per cui lo squid cui salivano di molto il numero di client collegati rallentava moltissimo arrivando verso le mille connessioni ESTABLISHED.
Non sembrava una questione di banda, ram o carico sul disco, ma proprio il client che fatica a farsi ascoltare da squid, si vede anche usando squidclient.
Ho fatto del tuning sulla macchina modificando parametri di sistema:
echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 30 > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
e spostando nel ram disk la directory della cache di squid
/etc/init.d/squid stop
/etc/init.d/squid stop
mkdir /dev/shm/squid
chown proxy /dev/shm/squid
chgrp proxy /dev/shm/squid
squid -z
/etc/init.d/squid stop
/etc/init.d/squid restart
cache_dir ufs /dev/shm/squid 900 16 256
ma ho solo ottenuto di farlo andare più forte PRIMA di arrivare alla 1000 connessioni.
Poi mi è venuto in mente che 1000 (1024 ?) fosse un numero sospetto e che ci fosse un limite, ed infatti ci sono i “file descriptors” che sono, su linux, proprio 1024.
con questo comando
cat /proc/sys/fs/file-nr
si vedono quanti file sono aperti sul sistema.
Quindi aggiungo la linea
fs.file-max = 102400
applico il parametro
sysctl -p
e modifico la linea in squid che mi permette di avere più file descriptor
# ADVANCED NETWORKING OPTIONS
# —————————————————————————–
# TAG: max_filedescriptors
# The maximum number of filedescriptors supported.
#
# The default “0″ means Squid inherits the current ulimit setting.
#
# Note: Changing this requires a restart of Squid. Also
# not all comm loops supports values larger than –with-maxfd.
#
#Default:
# max_filedescriptors 0
#
max_filedescriptors 4096
^^^^^^^^^^^^^^^^^^^^^^^
#
Riavvio squid e ualà, tutti felici.
ciao Spippolo! allora ci sei ancora! sono passata dal mio vecchio Blog ed ho iniziato a clikkare sui link dei vecchi amici!
Tutto bene??
Non ho piu’ il blog singolo ma uno collettivo dove ci dilettiamo a scrivere! e sta andando benino direi
Ben ritrovato!!
Interessante, molto interessante. Mi risolverà diversi problemi considerando che presto lo squid installato avrà 4000 client contemporanei (circa)
Grazie,
Jacopo