Squid3 CPU monte à 100% lors de téléchargements + baisse de bande passante



  • Bonsoir,

    Je rencontre un problème que je n'arrive pas à résoudre. Je dispose d'une installation virtualisée de Pfsense 2.1.5. Il est installé sur un virtualiseur Proxmox. La VM dispose de 2 coeurs CPU et 1.5 Go de RAM. Pfsense a 3 interfaces : 1 WAN, 1 DMZ, 1 LAN. OpenVPN est installé également.

    Tout fonctione bien sauf avec Squid lors de téléchargements. J'ai intallé le package Squid 3 + Squidguard. Les réglages sont ceux par défaut et j'ai mis 2 Go d'espace disque pour le cache avec 128 Mo de RAM. Et je précise que je l'utilise en mode transparent.

    Je dispose d'une connexion Fibre FTTH. Sans le proxy avec wget je monte à 32 Mo/s avec le proxy je suis à 12-13 et le CPU monte à 100%.
    J'ai modifié la valeur kern.ipc.nmbclusters="32768" dans loader.conf comme indiqué dans les docs Pfsense.

    Pfsense est insallé chez moi, donc il y a 3 utilisateurs maximum.

    Quelqu'un peut-il m'aider pour adresser ce problème s'il vous plaît ?



  • oui, je vais vous donner la solution :

    faites ce que vous faites actuellement avec une, ou deux machines physiques.

    et abandonnez votre hyperviseur.

    votre setup est sale.  vous feriez ca encore dans un datacenter dans l optique de securiser, de faire un frontal évolué, je dis pas

    mais la !  faire le frontal d'un site physique (chez vous), le virtualiser… ca pue.  votre problème prend sa source que vous faites qqch avec qqch qui n'a pas été concu pour cela

    ainsi vous ne pouvez pas éxclure le risque que des problèmes exotiques de ce type apparaissent.

    bien cordialement



  • par ailleurs sans connaitre la cadence des deux coeurs, je rajouterai que 1.5Go de ram pour proxmox c est un peu juste.
    squid, le portail captif, sont les plus voraces de RAM sur pfsense.

    sur un serveur qui gere environ 180 a 220 machines, ils consomment "d'emblée" 70% de la ram disponible (experience perso)

    en effet, vous pouvez facilement le voir, en stoppant squid+cp ou cp seul, quelques minutes puis redémarrer

    lorsque vous irez dans les RRD graphs, vous verrez un tres net décrochage des graphs



  • Il faudrait regarder pourquoi Squid est à 100%, où se situe la charge (attente, traitement, kernel etc.)

    Sans plus d'informations, je pencherai pour un problème d'I/O WAIT durant le téléchargement (regarder %WA), probablement causé par un problème de performance au niveau disque/cache.



  • Tout d'abord merci à vous deux pour vos réponses.
    Pour répondre à Florian, je ne suis pas sûr que mon setup soit si « sale » que ça. La virtualisation du FW se rencontre de plus en plus souvent.
    Les 1,5 Go de RAM sont dédiés à Pfsense l'host à 16 Go de RAM au total et est animé par un CPU AMD Phenom X4 955.
    Je ne constate pas de consommation de RAM/CPU par Squid en dehors des téléchargements et je n'ai pas de PC.
    Pour répondre à Juve (sei Juventino ?) je pense que tu as raison je m'en vais de ce pas vérifier les IO.



  • J'ai regardé TOP et je n'ai pas %wa dans le CPU !
    C'est assez étrange. Par contre iostat ne remonte rien de particulier quand je télécharge.
    Comment afficher le taux d'IO WAIT ?



  • toutes mes excuses, c est ma maniere de m exprimer mais ny voyez pas d injure

    quand je dis sale , comprenez,  non standard (sujet à pb)

    en effet, la virtualisation peut etre la cause des pb rencontrés sur ce type d'install

    => il est atypique de virtualiser un routeur, un firewall


    peut etre pouvez vous dans la lancée des conseils de juve, restreindre les fonctions de pfsense par "zoning" pour voir quel chainon de la virtualisation pose pb

    => Couper tout le sysloging, le RRD, dans pfsense, dans squid,  éviter tous les accès disques au max

    proxmox peut d'ailleurs dans son panel vous indiquer les points de charge
    voyez vous également le délai I/O s'emballer pendant vos tests? le host laisse t il apparaitre qqch?

    il est possible que le host aille très bien, on en revient au coté "sale", c'est a dire sujet a des pb exotiques de ce type



  • et 1.5GO de ram c'est pas trop suffisant non plus

    combien d'interfaces réseau physiques avez vous sur le proxmox?



  • Bonjour,

    Je dispose de 2 interfaces physiques et 1 virtuelle pour la DMZ.



  • vSwitch1(dhcp pfsense)                                                                                            vSwitch2 (dhcp box)
    <–------------------------------------------------------------------>                                      <------------------------------------------------------->

    CLIENT LAN <<>>          nic2 >>  VSWITCH PROXMOX >> KVM PFSENSE (PROXY)  >> VSWITCH PROXMOX >> WAN PROXMOX  >> nic1

    vmbr1                              LAN                                  WAN                                vmbr0                  WAN
                                                  <-------------------------------------------------------------------------------------------------------------------------->
                                                    Hôte PROXMOX

    Ce schema est il conforme a votre setup?

    par ailleurs, vous n'êtes pas sans savoir que lorsque "CLIENT LAN" tire à 20mo/s  le host doit "logiciellement gerer ce trafic sur les deux
    switchs.

    (d'ou ma reflexion anterieure relative "a la saleté de l'idée qui consiste a virtualiser un routeur")



  • Bonjour Florian22,

    Je n'avais pas vu votre message au-dessus de celui concernant le nombre d'interfaces physiques. Aussi vais-je vous répondre aux 2 restants ici.
    Mais tout d'abord je tiens à vous remercier pour la qualité de l'aide que vous apportez. Je ne me suis senti « insulté » par votre réponse, rassurez-vous.

    Pour répondre au delai d'IO sur Proxmox, il n'y en pas ou inférieur à 1% lors de mon test de téléchargement. Le CPU du host par contre monte à 50%.

    Votre schéma est assez conforme en effet. Je vais tenter de le reproduire :

    Pfsense :

    em0(vmbr0)–------em1(vmbr1)-----------em2 (vmbr2)
          ||                              ||                            ||
        LAN                        PROXY                      DMZ
                                          ||
                                      WAN

    Promox dispose de 2 interfaces physiques eth0 et eth1 et une virtuelle eth1:1.

    Je vais refaire les tests en désactivant toutes les sources d'écriture. Par contre, je ne trouve pas l'indicateur affichant le % d'IOWAIT.
    Savez-vous où pourrais-je trouver cette valeur ? TOP ne le montre pas.



  • La désactivation de toutes les sources d'IO ne change rien à l'affaire.



  • je ne comprends pas trop votre schema, mais puisque vous etes d'accord avec le mien, je vais me garder le mien en tete

    pouvez vous svp :

    1/ lancer un gros dl par fetch dans la console pfsense (donc pas derriere lan) on utilise pas le vswitch interne, juste le vswitch de l interf publique pfsense

    2/ allez dans prox  >  sortez le % cpu, et le I/O delay (disque)

    3/ allez dans pfsense, > top  > sortez le taux interrupt (reseau)

    4/ allez dans pfsense > top > sortez le taux CPU

    5/ allez dans pfsense > top > sortez la valeur ram

    puis refaites 2 a 5 en modifiant 1 > a savoir: vous me faites plus ca en fetch par pf, mais avec un PC sur LAN

    arangez vous dans les deux tests pour avoir le même "tirage" (debit/nombre de threads)  (prenez plusieurs fetchs paralleles, ou plusieurs DL sur le PC lan si besoin est)
    pour obtenir des tests comparables

    peut etre allons nous voir des choses interessantes dans ce test croisé, puisque dans un, vous testez depuis l'interface WAN sur un seul vswitch en ssh et de l''autre vous faites toute la traversée

    (et donc cette boucle "sale", puisque j'espere que vous avez pu constater que vous infligez une grosse boucle au host?)
    (c'est pour ca que je dis que c'est sale)  (on ne virtualise pas un firewall normalement)

    ps: il est possible que vous ne puissiez pas regler le probleme, la virtualisation peut causer des problemes tres exotiques dans certains cas (drivers cartes réseau etc)

    ps2: pouvez vous me confirmer que vous avez bien capté que votre config fait faire une boucle au trafic, et que pour 1 méga consommé au départ du LAN vous faites travailler le host pour 2 megas, puisque le trafic entre, sort, rerentre et ressort



  • Voici les résultats :

    J'ai fait un fetch et un wget d'un fichier d'1 Go.

    Voici les valeurs du fetch sur pfsense :
    Proxmox : CPU : ~35%, IO delay ~3%
    Pfsense : Interrupt : 10%, CPU : ~70% system, RAM : 165 active, 930 inactif.

    J'obtiens les mêmes valeurs depuis le LAN. En revanche ce test m'a permis de me rendre compte que même sans Proxy activé, j'obtenais des valeurs identiques en terme de ressources CP. Par contre je retrouve l'intégralité de ma bande passante. Ce qui m'amène à penser que la charge CPU excessive et la baisse de bande passante, ne sont pas corrélées.



  • Par contre chose étrange, avec fetch sur pfense je ne dépasse pas les 20-22 MB/s, alors que je suis à plus de 30 sur le LAN sans proxy.



  • 1/ Quel est le débit pour les tests (voir RRD)

    2/ quel est le gabarit proxmox utilisé pour pfsense (ressources)

    3/ quel est la frequence, la ram installée du host px

    4/ quel type de carte reseau utilisez vous



  • quel type de connexion avez vous?
    quel type de ressource a servi au test?

    je vous avais dit de prendre plusieurs threads (fetch) pour pousser la ligne dans ses retranchements

    prenez 7-8 fichiers 10G sur ovh.net, et relevez les valeurs moyennes sur 3-4 min

    plus votre test va durer longtemps, plus vous aurez des valeurs graphées dans rrd  laissez tourner les threads pour chaque test 10 minutes
    puis sortez nous les captures RRD de la section "system" et de "trafic"

    pour chacun  des deux tests.

    n'oubliez pas également de me dire si pfsense dispose de 100% des capacités CPU dans le gabarit proxmox, si il partage les ressources avec d'autres unités, ainsi que les spec techniques du host

    une fois toutes ces infos glanées, on pourra en dire plus (sans garantie)

    desactivez pour vos tests :  ¨Portail captif + proxy + tout service inutile, éteignez les autres VM présentes sur le HOST



  • quelles valeurs sont cochées dans votre pfsense sous la section system > advance > networking

    il y a 5 options cochables,  lesquelles sont actives/inactives



  • Ma connexion est une ligne fibre FTTH 280/50.
    Le host dispose de 8 Go de RAM et d'un processeur cadencé à 3,2 Ghz
    Les cartes dont des Intel Pro 1000
    Le gabarit PFsense est le suivant : Memory 1.34GB, Processors 2 (1 socket, 2 cores) host, HDD scsi 20G format RAW, 3 nics e1000
    Pfsense n'a pas de limitation en termes de ressources. Il est installé avec d'autres VMs bien entendu.

    Je précise toutefois que je ne rencontre des problèmes de débit qu'au travers du Proxy Squid. Si je le désactive je retrouve 100% des capacités de la ligne.
    Je vais néanmoins faire les tests demandés.



  • Les options Networking :

    Sont cochées Disable hardware TCP segmentation offload et disable hardware large receive offload



  • @moulip:

    Ma connexion est une ligne fibre FTTH 280/50.
    Le host dispose de 8 Go de RAM et d'un processeur cadencé à 3,2 Ghz
    Les cartes dont des Intel Pro 1000
    Le gabarit PFsense est le suivant : Memory 1.34GB, Processors 2 (1 socket, 2 cores) host, HDD scsi 20G format RAW, 3 nics e1000
    Pfsense n'a pas de limitation en termes de ressources. Il est installé avec d'autres VMs bien entendu.

    Je précise toutefois que je ne rencontre des problèmes de débit qu'au travers du Proxy Squid. Si je le désactive je retrouve 100% des capacités de la ligne.
    Je vais néanmoins faire les tests demandés.

    reduisez au minimum les parametres…

    ide ou sata pour le disque dur... par exemple

    eteignez les autres VM, et donnez 100% du CPU et de la RAM dispo (95% si vous voulez)

    faites cela a l 'occasion d'un 3e test

    quel type de processeur virtuel utilisé? kvm64?



  • Legacy pour quel item ?
    Il ne me semble pas que Proxmox permette de distribuer les ressources selon les Vms.
    Il existe la notion de CPU units mais ce n'est pas tout à fait la même chose. Pour la RAM il n'y a aucune contention.



  • ben si, c est le principe d un hyperviseur, vous affectez un nombre de vcore

    donnez les lui tous

    pour la ram pareil, c est reglable



  • en clair => si votre pfsense en temps que vm, n a acces qu a un seul coeur sur 4 dispo par exemple

    ca me choque pas outre mesure que vous montiez a  75% de ce même coeur… :)



  • J'ai dédié 2 coeurs à cette VM.



  • sur combien?

    type de vcore?



  • 2 sur 4 par contre vcore ?
    Je pense que c'est une notion Vmware. Mais si c'est le type de CPU alors j'ai choisi HOST à savoir que la VM voit le « vrai » CPU du host.



  • non

    dans proxmox a coté du nombre de coeurs, vous avez le type d'emulation du cpu (vcpu)

    donnez lui les 4 pour le 3e test a faire (rebootez la vm entre les changements sur prox)

    by the way :  a quoi vous sert franchement pfsense? qu'attendez vous du reseau que vous montez?

    – je ne pense pas que vous ayez la bonne approche -- globalement



  • @moulip:

    alors j'ai choisi HOST à savoir que la VM voit le « vrai » CPU du host.

    cela ne me parle pas ce que vous me dites



  • @Florian22:

    non

    dans proxmox a coté du nombre de coeurs, vous avez le type d'emulation du cpu (vcpu)

    donnez lui les 4 pour le 3e test a faire (rebootez la vm entre les changements sur prox)

    by the way :  a quoi vous sert franchement pfsense? qu'attendez vous du reseau que vous montez?

    – je ne pense pas que vous ayez la bonne approche -- globalement

    J'avais bien compris qu'il s'agissait du type d'émulation. J'ai donc mis host ce qui fait que la VM
    voit le véritable type de CPU du host à savoir un AMD Phenom X4 955. Si je choisis default la VM voit alors
    Common KVM Processor.



  • je vous invite a faire divers essais en ce sens.



  • moi sur mes hosts 64 bits j utilise "kvm64"  et ca marche tres bien


Log in to reply