J'ai récemment travaillé sur un projet consistant a crawler sur Internet, pour ce faire nous avons pris un gros serveur chez le numéro un français OVH, une belle bête de cours : I5 2 coeurs, 4 threads avec 16Go de mémoire.
Bref de quoi rendre dingue un mordu d'informatique.
Nous avons donc voulu y déployer notre application maison dessus qui tourne pour le moment que sur un environnement Windows 7.
Pour ce faire nous avons donc opté, pour une installation d'un Debian Wheezy sur laquelle nous avons installé VirtualBox afin de pouvoir y héberger un invité Windows.
Ca tombe bien notre application tourne d'ailleurs déjà dans une machine virtuel au labo.
Je vous passe la configuration de Wheezy et de Virtualbox, rien de bien compliqué en soit, mais nous y reviendrons certainement dans un autre billet.
Nous passons alors a la phase de test, et lançons la bête et c'est peu dire !
Notre application lance plus de 400 threads qui chacun font des requêtes sur Internet, autant dire que le trafic réseau est qualifié d'intense.
Et la c'est le drame... le nombre de requêtes lancées est anormalement bas comparé aux résultats obtenu au labo et surtout après quelques minutes, perte de connexion de réseau.
Nous en aurons pour des heures a cerner les problèmes pour enfin identifier.
Les pertes de connexion réseau sont dues a l'interface réseau virtuel proposé par VirtualBox pour Windows. Il ne support pas le trafic intense un comble. On retrouve d'ailleurs des posts sur internet qui le confirme. Il y aurait bien un autre interface virtuel de réseau le FAST III oui mais voila pas de drivers windows7 !
Ne trouvant aucune solution, nous avons choisi le chemin de l'innovation et avons fait le choix de changer tout l'environnement de virtualisation pour passer sur ProxMox (nous vous ferons d'ailleurs la aussi un billet plus tard)
Etonnement (ou pas) les premiers interfaces réseau de type Intel E1000 proposés par ProxMox nous mènerons au même constat mais après plus de temps : 30 minutes de trafic intense, a coup sure il doit y avoir du code partagé avec VirtualBox la dessous.
Nous opterons finalement pour l'interface VirtIO qui est une interface réseau virtuelle open source et pourrons alors profiter pleinement du réseau sans coupure. Notre serveur exploite a pleine puissance maintenant depuis 4 jours le réseau sans aucun souci !
Le dernier souci, des performances médiocre lors de notre crawling.... Merci OVH !
On a beau être sur un lien 100mb, avoir un super débit si les serveur DNS ne suivent pas, on avance pas.
Naïvement nous avons configuré notre réseau en utilisant donc les DNS d'OVH, bien mal nous en a pris : un véritable goulet d'étranglement.
Du coup en passant par ceux de Google et d'Open DNS nous avons des performances dis fois supérieur ce qui est un rapport énorme dans notre domaine.
Note : pour des applications critique de ce genre il faudrait tester différent service de DNS pour mesurer lesquels favoriser. On parle de centaines de résolutions de noms par secondes, donc les micro secondes comptent !
Voila....merci OVH...merci Oracle pour VirtualBox
2 jours de perdus.
Bref de quoi rendre dingue un mordu d'informatique.
Nous avons donc voulu y déployer notre application maison dessus qui tourne pour le moment que sur un environnement Windows 7.
Pour ce faire nous avons donc opté, pour une installation d'un Debian Wheezy sur laquelle nous avons installé VirtualBox afin de pouvoir y héberger un invité Windows.
Ca tombe bien notre application tourne d'ailleurs déjà dans une machine virtuel au labo.
Je vous passe la configuration de Wheezy et de Virtualbox, rien de bien compliqué en soit, mais nous y reviendrons certainement dans un autre billet.
Nous passons alors a la phase de test, et lançons la bête et c'est peu dire !
Notre application lance plus de 400 threads qui chacun font des requêtes sur Internet, autant dire que le trafic réseau est qualifié d'intense.
Et la c'est le drame... le nombre de requêtes lancées est anormalement bas comparé aux résultats obtenu au labo et surtout après quelques minutes, perte de connexion de réseau.
Nous en aurons pour des heures a cerner les problèmes pour enfin identifier.
Les pertes de connexion réseau sont dues a l'interface réseau virtuel proposé par VirtualBox pour Windows. Il ne support pas le trafic intense un comble. On retrouve d'ailleurs des posts sur internet qui le confirme. Il y aurait bien un autre interface virtuel de réseau le FAST III oui mais voila pas de drivers windows7 !
Ne trouvant aucune solution, nous avons choisi le chemin de l'innovation et avons fait le choix de changer tout l'environnement de virtualisation pour passer sur ProxMox (nous vous ferons d'ailleurs la aussi un billet plus tard)
Etonnement (ou pas) les premiers interfaces réseau de type Intel E1000 proposés par ProxMox nous mènerons au même constat mais après plus de temps : 30 minutes de trafic intense, a coup sure il doit y avoir du code partagé avec VirtualBox la dessous.
Nous opterons finalement pour l'interface VirtIO qui est une interface réseau virtuelle open source et pourrons alors profiter pleinement du réseau sans coupure. Notre serveur exploite a pleine puissance maintenant depuis 4 jours le réseau sans aucun souci !
Le dernier souci, des performances médiocre lors de notre crawling.... Merci OVH !
On a beau être sur un lien 100mb, avoir un super débit si les serveur DNS ne suivent pas, on avance pas.
Naïvement nous avons configuré notre réseau en utilisant donc les DNS d'OVH, bien mal nous en a pris : un véritable goulet d'étranglement.
Du coup en passant par ceux de Google et d'Open DNS nous avons des performances dis fois supérieur ce qui est un rapport énorme dans notre domaine.
Note : pour des applications critique de ce genre il faudrait tester différent service de DNS pour mesurer lesquels favoriser. On parle de centaines de résolutions de noms par secondes, donc les micro secondes comptent !
Voila....merci OVH...merci Oracle pour VirtualBox
2 jours de perdus.