4 votes

Réponse lente du proxy Squid - optimisation

Nous utilisons squid 3.0 sur Centos5.3 et avons actuellement 20 utilisateurs (Internet Explorer) utilisant ce proxy. Le problème est que l'accès via le proxy est plus lent. Même une page web simple comme google.com(.au) prend 5 secondes de plus qu'une connexion directe sans proxy. Il semble y avoir un retard d'environ 2-5 secondes. Désactiver le cache pour google.com(.au) n'a pas aidé. La définition explicite de dns_nameservers ne fait aucune différence.

Paramètres du serveur : Processeur Dual-Core AMD Opteron(tm) 2220, 6 Go de mémoire, disque dur SCSI de 60 Go

cache_mem 256 MB
cache_dir ufs /usr/local/squid/var/cache 30000 16 256
maximum_object_size_in_memory 256 KB
minimum_object_size 0 KB (0 - 200 KB - pas une réelle différence, le retard est toujours là)
maximum_object_size 32 MB

Comment modifier ces spécifications dans squid.conf en fonction des spécifications du serveur. Qu'est-ce qui pourrait causer le retard ? Également pour une page web plus grande comme yahoo.com.au, y a-t-il un moyen de recevoir une partie de la page à partir du cache et ensuite le reste (les images en dernier) ? Pour le moment, il n'y a rien pendant 15 secondes, puis une page web entière apparaît.

7voto

David Pashley Points 22851

Ma première intuition serait de renifler le trafic en utilisant tcpdump et de le charger dans wireshark pour voir où se situe le retard.

tcpdump -i any -s 0 -w /tmp/squid.pcap

(Si vous le faites via ssh, ajoutez "not port ssh" à la fin.)

Une fois que vous avez chargé ceci dans wireshark, vous devriez être en mesure de voir où apparaît le retard. Je recommanderais de le faire pendant une période calme pour ne pas trop avoir de trafic obscurcissant votre vue. Si vous pouvez être la seule personne à accéder au proxy à ce moment-là, c'est encore mieux.

Les retards probables sont :

  • Le navigateur contactant le proxy
  • Le proxy contactant le serveur web
  • Les requêtes DNS du proxy
  • Le proxy renvoyant la réponse au navigateur

3voto

Mei Points 4515

Pour certaines pages web, il n'est pas possible de dessiner la page avant que presque toute la page soit téléchargée, images comprises. Pour accélérer une telle page, voici quelques choses que vous pouvez faire :

  • Utilisez le cache web (comme vous le faites déjà) : cela permet d'importer les images plus rapidement.
  • Utilisez des machines plus rapides : une grande partie du temps peut être consacrée à la "composition" - c'est-à-dire, à la mise en forme de la page web pour l'affichage, et non à l'obtention des informations.
  • Utilisez des navigateurs plus rapides : c'est la même chose que ci-dessus. Si vous utilisez IE5, essayez IE6 ou IE7. Si vous utilisez Firefox 2, essayez Firefox 3 ou Safari.

Par le passé, je naviguais avec Internet Explorer pour Macintosh (à l'époque du 68k). Je me souviens bien d'avoir vu l'icône "journal" qui vous demandait d'attendre pendant que IE calculait comment afficher la page (pas d'obtention de données : calcul...)

Une autre chose à prendre en compte : certaines pages demanderont explicitement à ne pas être mises en cache : il revient à l'administrateur du cache de décider si ces demandes seront acceptées ou refusées. Typiquement, il s'agit des pages qui changent fréquemment ou que l'administrateur web ne souhaite pas voir stockées ailleurs. Ainsi, sur une telle page, vous aurez un surcoût supplémentaire à prendre en compte car le cache web doit traiter la page pour votre compte, même s'il n'y a jamais eu de page dans le cache.

Je suis d'accord pour dire que l'analyse du trafic est un bon moyen de déterminer pourquoi les choses sont en attente. Quelle partie du flux réseau cause réellement le retard?

Wireshark (et tcpdump) disposent d'un grand nombre de filtres que vous pouvez utiliser pour nettoyer le trafic : la seule raison pour laquelle vous devrez vraiment attendre jusqu'à un moment calme est pour éviter d'avoir un énorme fichier de capture TCP. Cependant, vous pouvez obtenir un ensemble raisonnable de données en vous limitant au trafic réseau direct vers le proxy :

tcpdump -s 0 -n -w tcpdump.dat port 3128

(Le port 3128 est le port squid standard : utilisez celui qui est approprié pour vous.)

Avec Wireshark, vous pouvez filtrer instantanément en fonction d'un seul flux de trafic TCP : donc vous n'avez pas à vous soucier non plus du mélange de différents flux.

Regardez également les journaux dans /var/log/squid et examinez ce qui se passe avec la demande : provient-elle du cache ? Vient-elle du site distant ? Essayez des demandes répétées - la page s'affiche-t-elle plus rapidement après l'avoir exécutée une fois ?

1voto

user62101 Points 93

J'ai découvert que c'était un problème de DNS lorsque j'ai rencontré le même problème exact.

Une fois que j'ai changé le serveur DNS dans squid.conf pour notre ISP, le décalage a disparu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X