View my profile on LinkedIn

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.

Controllare in un batch su windows se un programma è già stato lanciato

tasklist /FI “IMAGENAME eq mipoprogramma.exe” 2>NUL | find /I /N “mioprogramma.exe”>NUL
if “%ERRORLEVEL%”==”0″ echo il mioprogramma.exe è già stato avviato

Possiamo fare anche loop che controlla se un programma non è avviato e lo avvia o lo riavvia

:loop
tasklist /FI “IMAGENAME eq mioprogramma.exe” 2>NUL | find /I /N “mioprogramma.exe”>NUL
if “%ERRORLEVEL%”==”1″ mioprogramma.exe
ping -n 10 localhost
goto loop

Notare l’elegante uso del “GOTO”, un comando deprecato da tutti i programmatori del mondo, ma ricordate che il Vero Programmatore ™ non ha paura del “GOTO” :-)

Ripropongo un vecchio post: Come avere il vecchio menu di start su Vista e Windows 7

Per chi come me, per tanti motivi, io per pigrizia :-) , ha tenuto il vecchio menù di start di windows 95 fino a che ha potuto (ovvero Windows XP) è disponibile per Windows Vista e 7 questo piccolo programma freeware che trasforma il confuso e camaleontico menu di start in questa cosa IMHO assai leggibile:

Windows 7 classic menu

Windows 7 classic menu

Il programma lo potete scaricare da qui

Inviare mail da shell linux usando gmail

Se nonposso / volgio usare un smtp server locale posso appoggiarmi ad un mail server esterno, nel mi caso gmail usando un programma chiamato SSMTP

sudo apt-get install ssmtp

creare / modifcare il file di configurazione, “/etc/ssmtp/ssmtp.conf”


root=TUOACCOUNT@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=TUOACCOUNT@gmail.com
UseSTARTTLS=YES
AuthUser=TUOACCOUNT@gmail.com
AuthPass=Password_di_TUOACCOUNT
FromLineOverride=YES

e poi aggiungere queste due righe nel file  “/etc/ssmtp/revaliases”


root:TUOACCOUNT@gmail.com:smtp.gmail.com:587
localusername:TUOACCOUNT@gmail.com:smtp.gmail.com:587

Un altro malware che chiede soldi piuttosto insidioso

Se il solito malware che blocca il pc e chiede cento euro si toglie con 4 colpi di mouse stamattina ne ho visto uno che è più modesto, ne chiede solo 50, ma ormai in tempi di crisi anche i virus si adattano ad abbassare i prezzi, ma si toglie molto peggio.

Questo modifica il registro e cambia in:

HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon

la voce userinit e la voce shell che devono essere rispettivamente:

userinit  ->  c:\windows\system32\userinit.exe,   <- notare la virgola finale (grazie Seba)

shell  -> explorer.exe

se si cancella il virus, che si annida nella cartella temporanea dell’utente, senza modificare le rispettive voci di registro al prossimo reboot il pc si logga e poi esce, come avevo già scritto QUI in altre occasioni e se non abbiamo qualche cosa per modificare il registro di windows senza avviarlo (erd commander o chi per lui) l’unica è provare a fare un ripristino di configurazione.

Aggiungo uno screenshot del virus… e del logo del Penny Market ne vogliamo parlare ??? :-D

 

Passare da versione standard ad enterprise su Windows 2008 R2

Comprare un server con 64 giga di ram e poterne usare solo 32 perchè sopra c’è stata messa la versione standard di Windows 2008r2 fa girare parecchio le scatole. :-)

Senza stare a reinstallare, con il comando DISM, è possibile passare da una versione all’altra senza problemi in pochi minuti.

Il comando che ho usato è:

dism  /online /set-edition=ServerEnterprise /productkey=489J6-VHDMP-X63PK-3K798-CPX3Y

Nota che ad un certo punto il server pensa parecchio e sembra freezato, non è vero, aspettate che poi finisce.

Il product key è buono solo per il passaggio di versione, quando Windows riparte sarà da attivare ed avrete tre giorni per potergli dare un codice buono.

 

Reverse proxy (cifrato) con Nginx

http://nginx.org è un web server (russo) famoso per la sua leggerezza e le grandi prestazioni anche sotto enormi carichi.

Io l’ho usato per l’ennesima applicazione scritta coi calcagni che non permette la cifratura del traffico.

Si installa su linux o come nel mio caso, su windows 2008 r2 (con cygwin), si pubblica su internet porta 9443 (cifrata) che redirige sulla 9090 (in chiaro), si genera il certificato self signed e tutto parte a razzo.

Questo è il file di configurazione su windows:

——

worker_processes  1;
events {
worker_connections  1024;
}
http {
server {
listen              10.238.2.50:9443 default ssl;
server_name         mioserver.casamia.it;
ssl                 on;
ssl_certificate     ssl_keys/default_blank.crt;
ssl_certificate_key ssl_keys/default_blank.key;
location /{
ssi on;
proxy_pass      http://10.238.1.64:9090;
}
}
}

——

nella cartella ssl_keys ci vanno i certificati che tutti sappiamo generare, vero ? ;-)

L’equivalente su linux (perchè prima l’ho provato li) di questo file di configurazione è:

——

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
worker_connections  1024;
# multi_accept on;
}

http {

server {
listen              192.168.22.254:443 default ssl;
server_name         mioserver.casamia.it;
ssl                 on;
ssl_certificate     ssl_keys/default_blank.crt;
ssl_certificate_key ssl_keys/default_blank.key;
location /{
ssi on;
proxy_pass      http://10.238.1.64:9090;
#       proxy_set_header        X-Real-IP  $remote_addr;

}
}
}
——

 

hitstatus