optimisation de serveur WEB

Le
Johan Dindaine
Bonjour la liste,

Je sais qu'il y a déjà eu beaucoup de sujet a ce propos mais je
relance le sujet a nouveau pour me focaliser sur le low level.

J'ai un serveur web qui sert un site qui un site qui fait appel a du
javascript très régulièrement et le nombre de requête javascript =
étant
si fréquent qu'il sature le serveur de temps en atteignant le nombre
maximal de child process.

En faisant un netstat je me suis apercu que j'avais énormément de
processus avec le status time_wait j'ai donc modifier le noyau avec
ces parametres:

. /proc/sys/net/ipv4/tcp_fin_timeout a 5sec
. /proc/sys/net/ipv4/tcp_keepalive_intvl a 30 sec
. /proc/sys/net/ipv4/tcp_keepalive_probes a 5
. /proc/sys/net/ipv4/tcp_tw_recycle a 1
. /proc/sys/net/ipv4/tcp_tw_reuse a 1

J'ai egalement un kernel optimisé (hardened) avec juste ce qu'il faut,
j'ai aussi que les modules apache necessaire et que les modules PHP
necessaires.
En ce moment dans ma conf apache j'ai
MaxClients 250
Je peux augmenter cela, car le serveur n'est pas réellement saturé
mais je ne sais pas quel est la limite et s'il n'y a pas d'autre
améioration que je peux porter.

Donc pouvez vous me donner quelques un de vos retour d'experience s'il
vous plait. Qu'avez vous fait pour augmenter la capacité de vos
serveurs au niveau serveur (pas cluster).

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vera Mickael
Le #20094451
Salut,

Je suppose que par requête javascript tu entends AJAX.

La première piste que j'explorerais est l'optimisation du
code qui traite les requêtes. C'est surtout à ce niveau que
tu pourras gagner. Si il y a une base de données idem,
optimiser la base de données.

Ton serveur est saturé, au niveau CPU ou au niveau du
disque. Plus tu vas accepter de requêtes, plus ton serveur
sera saturé. Quand un serveur est saturé, il faut savoir
diminuer le nombre de requêtes traitées simultanément pour
redonner de l'air à ton serveur.

Il existe un nombre de requêtes traitées simultanément
optimal. On compte en transactions par seconde.

Ex :

100 clients connectés -> 20 transactions par seconde
500 -> 100
1000 -> 200
2000 -> 300
3000 -> 290

jusqu'à 1000 clients ton serveur est en sous charge, le
nombre de transactions est proportionnel au nombre de
clients (temps de réponse très court)

Au delà le serveur est en plein charge, les temps de réponse
diminuent mais tu restes dans une utilisation optimale en
transactions par seconde.

Au delà de 3000 clients, le serveur est saturé, les temps de
réponse deviennent très longs. Il y a risque de timeout et
de file d'attente saturée. On voit que ton serveur traite
moins de requêtes par secondes qu'à 2000 clients. Il perd
beaucoup de temps à gérer les accès concurrents en BD ou en
swap.

Il peut être judicieux de limiter le nombre de clients à
2500 simultanément.

A toi de voir quelles sont les valeurs optimales pour le
nombre de connexions BD et le nombre de threads maximum de
ton apache. Pour mesurer cela tu auras besoin d'un outil
pour tester la montée en charge de ton application, parfois
compliqué avec de l'AJAX.

Mickaël

Johan Dindaine a écrit :
Bonjour la liste,

Je sais qu'il y a déjà eu beaucoup de sujet a ce propos mais je
relance le sujet a nouveau pour me focaliser sur le low level.

J'ai un serveur web qui sert un site qui un site qui fait appel a du
javascript très régulièrement et le nombre de requête javascript étant
si fréquent qu'il sature le serveur de temps en atteignant le nombre
maximal de child process.

En faisant un netstat je me suis apercu que j'avais énormément de
processus avec le status time_wait j'ai donc modifier le noyau avec
ces parametres:

. /proc/sys/net/ipv4/tcp_fin_timeout a 5sec
. /proc/sys/net/ipv4/tcp_keepalive_intvl a 30 sec
. /proc/sys/net/ipv4/tcp_keepalive_probes a 5
. /proc/sys/net/ipv4/tcp_tw_recycle a 1
. /proc/sys/net/ipv4/tcp_tw_reuse a 1

J'ai egalement un kernel optimisé (hardened) avec juste ce qu'il faut,
j'ai aussi que les modules apache necessaire et que les modules PHP
necessaires.
En ce moment dans ma conf apache j'ai
MaxClients 250
Je peux augmenter cela, car le serveur n'est pas réellement saturé
mais je ne sais pas quel est la limite et s'il n'y a pas d'autre
améioration que je peux porter.

Donc pouvez vous me donner quelques un de vos retour d'experience s'il
vous plait. Qu'avez vous fait pour augmenter la capacité de vos
serveurs au niveau serveur (pas cluster).




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Publicité
Poster une réponse
Anonyme