Parmi les nouveautés, le fait qu'il fonctionne maintenant dans un mode mélant les threads et les processus afin d'avoir une meilleure montée en charge.
Il reste maintenant à voir les effets de cette sortie sur les statistiques d'utilisation de netcraft, ou apache est sur une pente plutot descendante depuis 9 mois environ.
(ndm : c'est la fête \o/)
Aller plus loin
- L'annonce (avec un changelog) (2 clics)
- Le site d'apache (2 clics)
- Des mirroirs (2 clics)
- Un aperçu des nouveautés (3 clics)
# changement majeur...
Posté par Yann Kerhervé (site web personnel) . Évalué à 10.
Il va falloir un peu de temps avant que tout le monde migre :)
On risque de voir également beaucoup de apache2 dans les survey netcraft... mais qui ne tournent pas sous unix. En effet, un des plus gros gagnant est windows qui pourra bénéficier du mode threadé...
[^] # Subversion ?
Posté par Mathieu Dessus (site web personnel) . Évalué à 7.
[^] # Re: Subversion ?
Posté par Pierre Tramal (site web personnel) . Évalué à 10.
http://www.linuxjournal.com/article.php?sid=4768(...)
http://www.tigris.org/files/documents/15/48/svn_for_cvs_users.html(...)
http://www.zepa.net/hypermail/elug/2001/04/0067.html(...)
[^] # Re: changement majeur...
Posté par Gloo . Évalué à 5.
Je dirais que c'est plutôt apache le gros gagnant et par extension, les logiciels libres qui vont chasser sur le territoire de microsoft: windows...
L'histoire nous dira si iis va _enfin_ se prendre la claque qu'il merite.
:)
[^] # Re: changement majeur...
Posté par Jak . Évalué à 5.
Non, une fois le serveur Windows sous Apache au lieu de IIS, la migration Windows -> Unix Libre sera beaucoup plus simple.
Car je doute que beaucoup de gens passent d'un Unix à Windows pour y installer Apache 2.
# Ca y est!!
Posté par Guillaume Plessis (site web personnel) . Évalué à 10.
Quel soulagement. Personnellement, je l attendais avec impatience pour pouvoir profiter du multithread. En effet, cela permet des applications plutot sympa, tel ircg (http://www.schumann.cx/ircg/(...) ), cette bibliotheque php qui permet d interfacer de l irc. Malheureusement, un support multithread etait necessaire sur le serveur http, ce qui obligeait a se tourner vers d autres serveurs (tels thttpd). L integration au sein d un environnement de production melant un apache traditionnel n etait pas aisee.
Pour une bonne nouvelle...
# Statistiques...
Posté par nemerid . Évalué à 10.
Vu que je n'étais pas du tout au courant de la sortie d'une version 2 d'apache, j'accueille cette nouvelle avec grand plaisir.
Quelqu'un pourrait m'expliquer concrètement les avantages du multithread et comment ça fonctionne ?
Il y a plein de bonnes nouvelles en ce moment. Je trouve qu'il y a pas mal de mouvements dans le monde du libre et ça traduit une bonne santée. Je suis confiant pour l'avenir :-)
[^] # Re: Statistiques...
Posté par bad sheep (site web personnel) . Évalué à 10.
En gros, le temps CPU pour créer un processus «lourd» est théoriquement plus important que pour créer un processus «léger», donc le serveur sera plus rapide :)
Le seul problème des processus légers, c'est que c'est plus compliqué à débugger car tout fonctionne avec les mêmes données, donc utilisation de système des protections exclusif des données... etc...
[^] # Re: Statistiques...
Posté par Sylvain Rampacek (site web personnel) . Évalué à 10.
Il en existe une émulation avec cygwin... mais pas en windows natif.
Par contre, les threads sont gérés par windows nativement.
--
Je sais, on est sur linuxfr et on ne parle pas de windows...
[^] # Re: Statistiques...
Posté par VERMEEREN Sebastien . Évalué à 10.
Par ailleurs, fork est tres archaique et tres lourd, puisqu'il duplique l'ensemble de la memoire et des descripteurs de fichiers ouverts.
Fork est parfois aussi thread non safe comme sous solaris.
Par contre qqchose que je n'ai toujours pas compris sous linux, c'est que apres la fonction pthread-create sous linux qui cree un thread, On voit dans le top un nouveau processus ... Est ce un leure ou ca cree vraiment un process ? Y a t il une autre maniere de creer un thread sous linux ?
[^] # Re: Statistiques...
Posté par Sylvain Rampacek (site web personnel) . Évalué à 10.
fork() : création d'un nouveau processus en copiant l'environnement mémoire et le statut d'exécution du processus en cours (le père donc).
CreateProcess : création d'un nouveau processus et de son thread attaché en exécutant un binaire.
Donc dans le deuxième cas, on ne peut pas profiter directement du travail du processus père dans le processus fils (à part en passant par un fichier de stockage ou autre mécanisme système).
Bref la fonction CreateProcess() de Windows est équivalente à exec*() de Unix.
Après, pour ta question sur le pthread_create, pour moi c'est la création d'un nouveau thread et pas d'un processus (le man dit comme cela également).
Mais faudrait peut-être vérifier.
[^] # Re: Statistiques...
Posté par VERMEEREN Sebastien . Évalué à 6.
Par contre d'apres les tests que j'ai fait pour chaque thread que j'ai dans mon programme j'ai une entree identique dans le top avec un pid different, mais avec la meme taille memoire.
C'est assez bizarre, j'ai cru lire que linuxthread utilise clone pour creer les threads, et fork utilise aussi clone...
[^] # Re: Statistiques...
Posté par Alberto . Évalué à 6.
Je crois qu'il y a aussi un flag pour dire de partager le pid, mais que c'est (c'etait?) partiellement implemente. Bref clone c'est l'outil de base pour programmer avec les threads mais il n'est pas portable.
[^] # Re: Statistiques...
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 7.
Comme le nom l'evoque les thread 'kernel' sont gerres par le noyau, sous linux il sont en effet tres semblables a des processus ce qui permet un ordonnancement simplifier du bazar, mais il ne faut pas s'y tromper les thread kernel partagent bel et bien leurs memoire avec leurs pere, la seule difference avec les processus et que l'ecriture sur des donnees partagees ne genere pas de copie desdites donnees.
Il y a une autre possibilite pour faire du multi thread c les thread utilisateurs implementes par exemples via la lib gnu pth (portable thread) si je ne m'abuse. Dans ce cas on ne voit plus qu'un seul processus (vu qu'il n'y en a en fait q'un seul) celui ci faisant un ordonnancement au niveau utilisateurs pour chaqu'un de ses thread.
Chaque solution a ses avantages et inconvenient je ne saurait pas dire quelle est la meilleure.
[^] # Re: Statistiques...
Posté par Guillaume Laurent (site web personnel) . Évalué à 7.
Non, exec() et fork() sont deux appels indépendants. En général pour lancer un autre programme on fait un fork() suivi d'un exec() (ce que fait un shell qui lance une commande par exemple), mais il y a des cas ou on veut faire un exec() directement.
Mais creer un processus a partir de soi n'a que peu d'interet par rapport au thread a part de charger un autre code => donc un autre executable.
Non plus. Historiquement, les serveurs sous Unix fonctionnent comme ça. Un process père qui écoute en attente de connection, et à chaque connection il forke un fils qui la traite. C'est un peu plus lourd que des threads, mais plus facile à programmer et plus fiable.
[^] # Re: Statistiques...
Posté par VERMEEREN Sebastien . Évalué à 1.
Je trouve les forks personnellement moins elegants que les threads, car il surcharge la machine mais aussi la table des process. Par contre c'est clairement plus fiable et plus facile a developper / debugger.
Par contre fork ne fait pas bon menage avec les threads sous solaris par exemple.
Enfin tout ca c'est une question de gout comme beaucoup de choses :)
[^] # Re: Statistiques...
Posté par Sébastien Koechlin . Évalué à 10.
Linux crée donc un VRAI processus, ce qui est bien plus logique, ça évite beaucoup de ré-écriture, beaucoup de complexité, et ... beaucoup de bugs.
Fork quand à lui, n'est pas si lourd que cela, parce qu'en réalité, pratiquement rien n'est dupliqué, le noyau fonctionne en mode 'copie sur écriture', la mémoire n'est dupliqué que lorsqu'il y a effectivement une écriture (qui fait que les données changent entre le père et le fils), et cette copie ne se fait que sur la page mémoire concernée (4Ko sur i386).
La différence entre un processus et un thread n'est finalement pas vraiment au niveau des performances sous Linux, ça concerne plutôt la possibilité de partager de la mémoire. Avec des processus il faut passer par des mécanismes un peu lourd comme shm ou un socket, avec des threads c'est bien plus simple. En cas de bug, le modèle processus reste bien plus simple à gérer, on ne perturbe qu'un processus, avec les threads, on fait tomber tous les threads.
Enfin Apache doit généralement être root pour pouvoir se binder sur le port 80, avec des processus, tous les serveurs qui répondent aux requêtes ne sont pas root, les exploits n'exposent que l'identité sous laquelle tourne le serveur. Avec les threads, on ne peut pas utiliser ce genre de solution.
[^] # Re: Statistiques...
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 3.
Windows gerre des processus qui contiennent au depart un thread. On peut recreer des processus mais pas de vraies copie du processus initial (sauf a executer le meme).
Les threads sont des thread kernel.
Mais il gerre aussi ce qu'ils appelent des fils (du singulier fil(ficelle)) qui sont en fait des thread utilisateur.
Allez vous retrouver dans tout ce bordel j'vous dit pas. ET a cote de ca y a les dll qui interceptent les appels de creation de thread ds les processus qui les utilisent !
# On ne migre pas comme ça
Posté par Talou (site web personnel) . Évalué à 10.
Finalement qu'est-ce u ça m'aporte ?
Une {url] (en français de préférence) ?
[^] # Non, mais c'est pas pour ça que c'est dur...
Posté par nodens . Évalué à 9.
http://httpd.apache.org/docs-2.0/upgrading.html(...)
(en français si votre novigateur est configuré pour dire que de toutes les langues, c'est la ouate -euh pardon, le français- qu'il préfère)
Cela dit, je suis d'accord sur le fait qu'on ne migre pas comme ça ; notamment, il y a le problème des modules externes, qui n'ont pas forcément été portés pour les versions 2.0.x . Mais pour un grand nombre de gens, une migration de 1.3.x vers 2.0.x devrait se faire en douceur, à condition de faire ça proprement... A commencer par ne pas faire ça sur un serveur d'exploit comme un barbare , càd sans avoir au moins testé les fonctions de base (i.e. qui servent le plus souvent dans ton environnement !) :)
Donc, pour ce qui est de php et tout le bazar, il vaut mieux attendre encore un peu. Pas longtemps, si tu veux mon avis. En attendant, si l'upgrade te démange, tu peux toujours passer en 1.3.24 :)
# Overview of New Features in Apache 2.0
Posté par swix . Évalué à 10.
http://httpd.apache.org/docs-2.0/new_features_2_0.html(...)
(vu que le changelog indiqué dans l'annonce est pas particulierement utile ni parlant).
happy compiling :)
--Swix
# Migration vers apache 2.0 pour un hébergeur
Posté par Ludovic Boisseau . Évalué à 10.
C'est d'ailleurs ce qui semble être le cas. La page "migrer vers Apache 2.0" (http://httpd.apache.org/docs-2.0/upgrading.html(...)) indique les modifs dans les fichiers de conf :
_ CacheNegotiatedDocs remplacée par CacheNegotiatedDocs on|off
_ ErrorDocument 403 "Some Message remplacé par ErrorDocument 403 "Some Message"
_ AccessConfig et ResourceConfig à remplacer par Include
_ BindAddress à remplacer par Listen
_ <ServerType> n'existe plus
Pour ces modifs, il suffit d'un simple grep ou sed sur les fichiers de conf et d'une petite modif de syntaxe dans les outils de création de fichiers de conf. Rien de grave de ce côté, donc.
Plus gênant :
_ ExtendedStatus n'existe plus. Dommage, certains hébergeurs s'en servent pour superviser leurs serveurs Web :o( L'air de rien, ça a un gros impact. En plus, la doc (http://httpd.apache.org/docs-2.0/mod/mod_status.html(...)) n'a pas été remise à jour... Là ça bloque !
_ mod_log_agent et mod_log_referer sont remplacés par CustomLog. Esperons que résultat final puisse être identique afin de ne pas troubler les outils de stats déjà utilisés avec Apache 1.3 (souvent développés à la main par les hébergeurs).
Ces deux dernières modifs risquent de retarder pas mal le déploiement d'Apache 2.0 chez les hébergeurs, et à mon avis, les stats NetCraft ne vont pas être boulversés dès demain.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.