Un preconnect à partir d'un navigateur peut également entraîner un BADREQ
si le navigateur n'utilise pas toutes les connexions. Par exemple, lorsque l'utilisateur ne télécharge qu'un seul fichier par navigateur.
Cela signifie qu'il y a deux causes possibles de BADREQ
avec du cR--
ou du CR--
(vérifié avec HAProxy v1.5-dev24) :
- Connexion inutilisée : Cela signifie que pour HTTP(S), un client s'est connecté via TCP mais aucun en-tête de requête HTTP n'a été envoyé jusqu'au
timeout http-request
(CR--
) ou que le client a refermé la connexion (cR--
). Cause : Connexion inutilisée à partir d'un preconnect d'un client normal ou d'un équilibreur de charge ou à partir d'un scan.
- Mauvaise requête. Un client a envoyé une mauvaise requête. Ces erreurs devraient être visibles via la socket de statistiques (voir réponse précédente de womble).
La plupart des navigateurs modernes comme Firefox ou Chrome font un préconnect. J'ai remarqué que Firefox ou Chrome ouvraient toujours au moins 2 connexions même si le navigateur n'effectue qu'une seule requête comme le téléchargement d'un fichier (par exemple, uniquement le téléchargement de http://cdn.sstatic.net/serverfault/img/favicon.ico
).
Augmenter la valeur de timeout http-request
dans votre configuration HAProxy peut aider à réduire ces entrées de journal pour les connexions inutilisées car une valeur plus élevée signifie plus de chances que la connexion sera utilisée par un client, mais vous risquez également que votre serveur ne puisse plus gérer toutes les connexions ouvertes (inactives). Si vous utilisez un autre équilibreur de charge comme Amazon ELB devant HAProxy, vérifiez que ce délai dans HAProxy correspond à celui de l'équilibreur de charge, car ils pourraient également utiliser le preconnect.
Pour les connexions inutilisées, vous pouvez utiliser option dontlognull
dans HAProxy pour désactiver ces entrées de journal. Citation de la documentation de HAProxy pour cette option :
Il est généralement recommandé de ne pas utiliser cette option dans des environnements non contrôlés (par exemple sur Internet), sinon les scans et autres activités malveillantes ne seraient pas enregistrés.