Page 1 sur 1
Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 31 mai 2010, 11:40
par enneite
Mon serveur windows 2003 sous lequel est installé APACHE/PHP rame depuis ce matin,
Je suis obligé de rebooté apache régulièrement.
les raisons du LOG d'erreur indiquent ceci :
[Mon May 31 11:17:56 2010] [warn] Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting
[Mon May 31 11:18:04 2010] [warn] (OS 64)Le nom réseau spécifié n'est plus disponible. : winnt_accept: Asynchronous AcceptEx failed.
[Mon May 31 11:18:30 2010] [warn] (OS 64)Le nom réseau spécifié n'est plus disponible. : winnt_accept: Asynchronous AcceptEx failed.
[Mon May 31 11:19:31 2010] [warn] (OS 64)Le nom réseau spécifié n'est plus disponible. : winnt_accept: Asynchronous AcceptEx failed.
Savez vous à quoi cela est du ?
Re: Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 31 mai 2010, 14:48
par Nagol
oui c'est du à
Consider raising the ThreadsPerChild setting
suffit de lire en fait.
Re: Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 01 juin 2010, 12:05
par enneite
Merci Nagol, lol!
non serieux, hier, après avoir tester quelques modifs
En modifiant ThreadsPerChild 250
par ThreadsPerChild 100 ou par ThreadsPerChild 350, rien ne changeait.
Mais j'ai eu la solution : Rebootage du serveur (pas d'apche mais de l'ordinateur)
Un bon rebootage, y a que cela de bon!
Mais je ne sais toujours pas pourquoi cela me l'a fait Lundi vers 11h alors que ce n'est pas le moment où le traffic sur le site est le plus fort et que je n'avais jamais eu ce problème.
J'aurais aimé connaitre la cause du problème.
Est ce que cela peut correspondre à une attaque par dénis de service par exemple?
Re: Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 01 juin 2010, 12:58
par Nagol
Va savoir, c'est le problème des serveurs windows, c'est completement impossible d'avoir le fin mot de ce qu'il se passe réellement, à prioris tu étais en train d'exploser les limites systèmes de création de thread, donc soit un petit malin était effectivement en train de te DDOS soit c'est une conséquence normale du type de fréquentation qu'a ton serveur. dans tous les cas si je puis me permettre, un serveur sous windows à mon avis c'est une hérésie, du simple fait qu'une interface graphique windows bouffe entre 500 et 1go de ram à elle toute seule, et que la prise en main à distance est un calvaire comparé à un serveur unix. qui plus est si tu utilises apache tu n'as manifestement pas besoin d'avoir un serveur windows.
Ce n'est que mon avis, tu trouverais des tonnes de gens pour argumenter contre ça, mais c'est à toi de voir en définitive.
Re: Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 01 juin 2010, 16:14
par zeus
Je vais argumenter dans le sens de Nagol à savoir que, pour moi, la seule raison valable d'avoir un serveur Windows pour héberger un Apache est le fait que les admin-sys maitrisent Windows.
Un serveur Unix sera toujours plus stable pour héberger un Apache.
Re: Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 02 juin 2010, 14:05
par enneite
bah en fait, ce sont les serveurs de mon entreprise plus que mes serveurs à moi.
Tous avec windows, certains avec apache d'autres avec IIS.
Donc je pourrai toujours proposer à mon patron une migration vers des serveurs unix...
Mais je pense qu'il ne sera pas très chaud, d'autant plus que lui y connait encore moins que moi en linux (c'est pour dire!), à moins que le problème resurvienne fréquement.
Mais lorsque j'aurai à choisir un serveur pour héberger des sites depuis chez moi (ce qui est l'un de mes projets persos quand j'aurais une maison plus grande), je tiendrai compte de vos conseils, n'en doutez pas.
Re: Serveur apache qui n'arrive plus à gérer les requêtes
Posté : 01 juil. 2010, 12:56
par enneite
Bon, ce problème m'arrive toujours régulièrement.
Et je crois avoir mis un nom dessus : SLOWLORIS
Slowloris est un exploit permettant de faire un DoS sur beaucoup de serveurs web (Apache 1.x, 2.x, dhttpd,…). Slowloris garde les connections vers le serveur HTTP ouvertes en envoyant des requêtes partielles et continue d’envoyer régulièrement des entêtes afin d’éviter la fermeture des sockets.
Slowloris nécessite deux modules PERL installables avec la commande :
- perl -MCPAN -e ‘install IO::Socket::INET’
- perl -MCPAN -e ‘install IO::Socket::SSL’
L’attaque se fait en suite avec la commande :
- ./slowloris -dns
http://www.monserveur.com -port 80
Slowloris nécessite que toutes les sockets du serveurs soient libres avant de pouvoir bloquer entierement le serveur web, ce qui peut prendre un certain temps sur les sites chargés.
En effet, ce problème arrive souvent lorsque le serveur apache redémarre et de plus souvent la nuit ou le WE quand le traffic est faible.
Pour l'instant je tente une des connexions :
L'installation de mod_antiloris
mod_antiloris permet de se protéger contre slowloris en comptant le nombre de connexions simultanées par adresse ip et en interdisant toute nouvelle connexion ayant dépassé un nombre limite autorisé (5 par défaut).mod_antiloris fonctionne sur Apache v2
Je pourrais aussi installer mod_security
Si cela ne suffit pas j'installerai un proxy reverse car apparament c'est encore la meilleure solution pour ce genre de problème... mais bon, mon apache sert déjà de proxy à d'autres serveurs du coup cela me gonffle un peu de tout reconfigurer pour l'instant.