Le problème avec ca, c'est qu'en réglant un timeout sur MySQL on fait échouer la connexion dès que le problème arrive. Ca veut dire qu'il faut forcément prendre en compte cela directement dans son code PHP. Ce n'est pas tout le temps possible, particulierement quand le code n'est pas le sien . De plus, tu auras toujours le délai de 3 secondes, celui ci venant du syscall connect(), tu ne peux pas , par définition l'interrompre ou le changer. La connexion durera donc 3 secondes, échouera, et sera réssayée. Je pense qu'a ce moment la il vaut mieux laisser connect() faire son boulot et immédiatement donner accès à la connexion après 3 secondes.
Les changements introduits dans les nouveaux kernels n'arrangent pas les choses, ni le problème. Pour l'instant le seul truc utilisable que j'ai est un 2.6.20.7 qui à l'air de fonctionner sans erreur. Je vais après compiler tous les kernels suivants un par un jusqu'a ce que je tombe sur le bug, et ensuite il faudra bisect. Rien que la quantité de boulot que cela implique me déprime un peu. Il n'empeche que je suis surpris qu'un truc pareil n'ait pas fait surface plus tôt et ne soit pas plus "populaire", surtout si cela apparait dans des configs multiserveur avec par exemple des serveurs OVH (a moins qu'il y ait vraiment peu de monde a faire du multiserveur?). En même temps, cela ne dérange pas tout le monde qu'une page de temps en temps soit plus lente à charger (c'est beaucoup, beaucoup plus dérangeant quand il s'agit d'interactions avec flash)
A suivre après ces tests