[article] Faire évoluer son architecture serveur

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


fandecine
Modérateur
Modérateur
 
Messages: 1640
Inscription: Sam Avr 02, 2005 14:58

Message le Ven Jan 11, 2008 23:10

tu peux développer mahe, je ne vois pas ou tu veux en venir !?


sietjp
WRInaute passionné
WRInaute passionné
 
Messages: 622
Inscription: Dim Déc 14, 2003 21:05

Message le Sam Jan 12, 2008 0:43

raljx a écrit:Une solution a mon gout plus performante qu'un load balancing sur des BDD est d'avoir 2 mysql (1 maitre et un esclave) le maitre synchronise sur l'esclave, on fait les requestes INSERT et UPDATE sur le maitre et les SELECT sur le slave, on gagne enormement en perf avec un tres gros trafic (+100 000 VU/mois). Le loadbalancing etant plus optimum pour des gestions de charges sur des serveurs web.


Oui, suite à mon post je me suis documenté et j'ai trouvé une documentation sql extra en anglais qui explique comment utiliser l'architecture maitre esclave que tu décris : http://www.mysql.com/why-mysql/white-pa ... aleout.php

fandecine a écrit:Je vois que tu utilise apache avec les modules chargés en dynamique, tu peux aussi recompiler apache avec ses modules en statique (aprés bien sur avoir sélectionné les modules utiles ! :wink: ) et tu diminuera encore la taille de tes process apache.

Par curiosité, peut tu nous donner l'extrait de ta conf apache qui décrit les modules à charger ?

Comment vois tu que j'utilises apache avec des modules dynamiques (c'est vrai mais je comprends pas comment tu peux le voir avec mon message) ?


Sinon je complète mon retour d'expérience. En fait j'étais bien content au début mais j'ai passé ma journée à recomipler php car petit à petit je me suis rendu compte qu'il y avait certaines fonctions que j'utilisais s'en le savoir.

J'ai bien lutté pour remettre en route eAccelerator, recompiler les libjpeg et freetype2 pour gd et jpgraph.

Mais c'est une expérience trés intéressante qui apprend beaucoup de chose.

Je me suis notamment rendu compte que c'était eAccelerator qui gonflait la taille des thread apache.

Au final, la recompilation de php m'a fait gagné 7M contrairement à ce que je disais dans mon premier post.

Je reposte mon .configure final
Code: Tout sélectionner
./configure --with-apxs2=/usr/sbin/apxs --with-mysql --with-config-file-path=/etc --enable-mbstring --disable-ftp --disable-wddx --disable-filter --without-iconv --disable-json --disable-hash --disable-tokenizer --disable-pdo --disable-posix --disable-reflection --disable-spl --without-sqlite --without-pear --disable-xml --disable-libxml --disable-simplexml --disable-xmlreader --disable-xmlwriter --disable-zip --disable-ctype --disable-dom --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-ttf=/usr --with-freetype-dir=/usr --disable-magic-quotes


Et voici pour apache :
Code: Tout sélectionner
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule logio_module modules/mod_logio.so
#LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
#LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule cgi_module modules/mod_cgi.so
#
# The following modules are not loaded by default:
#
#LoadModule cern_meta_module modules/mod_cern_meta.so
#LoadModule asis_module modules/mod_asis.so
LoadModule php5_module        /usr/lib/httpd/modules/libphp5.so


fandecine
Modérateur
Modérateur
 
Messages: 1640
Inscription: Sam Avr 02, 2005 14:58

Message le Sam Jan 12, 2008 10:19

sietjp a écrit:Comment vois tu que j'utilises apache avec des modules dynamiques (c'est vrai mais je comprends pas comment tu peux le voir avec mon message) ?

c'est cette option de ton configure : --with-apxs2=/usr/sbin/apxs :wink:

Pour ce qui est de la taille de tes processus apache, il y a aussi GD, Freetype, libjpg etc ... tout ce qui concerne les librairies graphiques qui plombe les processus.

Personellement, je ne les utilise que sur le serveur secondaire (celuis avec mysql et les images). C'est ce serveur qui abrite mes outils d'admin et qui effectuent les traitement d'images. Le serveur de principal est ainsi "allégé". De plus il ne sert que des fichier dynamiques (php) et un seul par connection (keepalive off).
Du coup j'ai essayé de patcher apache avec lingerd pour liberer la connection encore plus rapidement mais j'ai une erreur lors de l'application du patch. J'ai maillé à l'auteur lingerd et j'attend la réponse car je n'arrive pas à trouver d'ou vient l'erreur :cry: Mais cela marche de toute façons trés trés bien :D


Ensuite, je n'utilise pas eaccerator, mais Zend optimiser + Memcache qui est un daemon de gestion de memoire partagé. Bien entendu, la gestion de cette mémoire partagée n'est pas automatique mais écrite dans mon code.

Voici un extrait de la liste des processus du serveur principal :

Code: Tout sélectionner
www      13319  0.0  0.4  76796  4992 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13320  0.0  0.4  76796  4588 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13321  0.0  0.4  76796  4556 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13322  0.0  0.4  76796  4576 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13323  0.0  0.4  76796  4576 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13324  0.0  0.4  76796  4996 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13325  0.0  0.4  76796  4592 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13326  0.0  0.4  76796  4604 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13327  0.0  0.4  76796  4580 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13328  0.0  0.4  76796  4984 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13329  0.0  0.4  76796  4992 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13330  0.0  0.4  76796  4996 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13331  0.0  0.4  76796  4992 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13332  0.0  0.4  76796  4984 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13333  0.0  0.4  76796  4580 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13334  0.0  0.4  76796  5004 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd


Et du serveur secondaire :

Code: Tout sélectionner
www      18703  0.0  0.4  11052  4460 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18704  0.0  0.4  11052  4460 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18705  0.0  0.4  11056  4476 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18706  0.0  0.4  11056  4404 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18707  0.0  0.4  11052  4348 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      23965  0.0  0.2  38452  2524 ?        Sl   06:25   0:00 /usr/local/sbin/lighttpd
root       30767  0.0  0.1  3660  1292 ?          S    2007    0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe
mysql    30794  0.1  6.3  365380 65080 ?      Sl   2007    29:18 /usr/local/mysql/libexec/mysqld
www      31000  0.0  0.3  10964  3996 ?        Ss   2007    0:00 /usr/local/bin/php-cgi


Chacun des serveurs ayant 1Go de mem. :D


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Sam Jan 12, 2008 10:24

Hé ben on apprend des choses :o

Fandecine aurait tu un lien pour aider dans la compilation d'apache l'allégeant des modules inutiles ?

RoN


fandecine
Modérateur
Modérateur
 
Messages: 1640
Inscription: Sam Avr 02, 2005 14:58

Message le Sam Jan 12, 2008 10:40

Avant de chercher à recompiler apache en sélectionnant les modules apache, il faut savoir à quoi ils servent :wink:

Voici la liste des modules standarts apache 1.3 :

mod_access : Contrôle d'accès basé sur le nom du client ou son adresse IP
mod_alias : Association de différentes parties du système de fichier de l'hôte dans l'arborescence des documents, et redirection des URL.
mod_asis : Envoi de fichiers contenant leurs propres en-têtes HTTP
mod_auth : Authentification des utilisateurs à partir d'un fichier texte
mod_auth_dbm : Authentification des utilisateurs à partir d'un fichier DBM
mod_autoindex : Création automatique des listes des répertoires
mod_cgi : Appel des scripts CGI
mod_dir : Gestion de base des répertoires
mod_env : Passage d'environnement aux scripts CGI
mod_expires : Ajout de l'en-tête Expires: pour les ressources spécifiées
mod_headers : Ajout d'en-têtes HTTP aux ressources
mod_imap : Gestion des fichiers imagemap
mod_include : Documents analysés par le serveur
mod_info : Informations sur la configuration du serveur
mod_log_agent : Trace des User Agents
mod_log_config : Trace configurable des accès.
mod_log_referer : Trace des référants d'un document
mod_mime : Détermination du type des documents en fonction de l'extension du fichier
mod_mime_magic : Détermination du type des documents en fonction de "nombres magiques"
mod_negotiation :Négotiation de contenu
mod_proxy : Module de cache par proxy
mod_rewrite : Association des URI à des fichiers en utilisant des expressions régulières
mod_setenvif : Définition de variables d'environnement en fonction des informations client
mod_so : Support des modules dynamiques
mod_status : Affichage de l'état du système
mod_userdir :Répertoires personnels d'utilisateurs
mod_unique_id : Génération d'identifiants uniques de requête
mod_usertrack : Suivi des utilisateurs à l'aide de cookies
mod_vhost_alias : Support d'hôtes virtuels dynamiquement configurables

ensuite, étant donné que je n'ai pas encore ouvert de site pour publier mes tutos
:oops: tu m'envois un MP avec ta configuration (OS, processeur, mémoire disqu etc) et tes souhaits d'application et je te renvois un tuto sur mesure :wink:


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Sam Jan 12, 2008 10:52

Pour essayer d'en faire profiter tout le mode jme suis installé un wiki, rapide a mettre en place et simple pour rédiger (-www.ronux.fr/wiki)

Sinon on pourrait prendre un exemple assez commun :

Debian etch sur un petit serveur comme un kimsufi ou dedibox fesant tourner un blog/wiki/annuaire :wink:

EDIT : j'ai relu , en fait il faudrai plutot compiler php non ?


EDIT 2 : bon j'ai trouver les 36 modules a laisser en place , la liste expliquée des modules et je sais ceux dont j'ai besoin , maintenant comment on configure avant de faire le make ?

EDIT 3 : bon ben jvais adopter lighttpd , ca peut etre utile de compiler php quand meme ?

Merci beaucoup :)

[article] Faire évoluer son architecture serveur

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Web Accelerator



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités