Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

optimisation de serveur WEB

1 réponse
Avatar
Johan Dindaine
Bonjour la liste,

Je sais qu'il y a d=E9j=E0 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=E8s r=E9guli=E8rement et le nombre de requ=EAte javascript =
=E9tant
si fr=E9quent 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 =E9norm=E9ment 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=E9 (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=E9ellement satur=E9
mais je ne sais pas quel est la limite et s'il n'y a pas d'autre
am=E9ioration 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=E9 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

1 réponse

Avatar
Vera Mickael
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