# Optimisation Apache2

**URL:** <https://www.debian-fr.org/t/optimisation-apache2/82994>\
**Category:** Programmation\
**Tags:** apache\
**Created:** [Octobre 6, 2020, 8:06 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994 "2020-10-06T20:06:22Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Acksop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/acksop/32/8207_2.png) [@Acksop](https://www.debian-fr.org/u/Acksop)\
**Post date:** [Octobre 6, 2020, 8:06 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/1 "2020-10-06T20:06:22Z")

</div>

Bonjour a tous !

J’aimerais savoir si certains d’entre-vous connaisse bien les configurations possible d’apache .  
En effet j’ai ce soir demander un audit SEO sur [https://myrankingmetrics.com](https://myrankingmetrics.com) et j’ai depuis du mal a accéder a ma plate-forme. Alors qu’au niveau des ressources je suis large !

 ![Capture du 2020-10-06 22-00-28](https://www.debian-fr.org/uploads/default/original/2X/1/1f3d74ba47e60489b0ba96c9391b4a5b354e4e95.png)

Seulement la configuration s’arrête pour moi au niveau du choix du Module Multi-Processus (MPM) et quelques options de configuration des Hôtes.

Je souhaiterais lancer une discussion sur le sujet. Une aide serait bien précieuse !

---

<div class="post-metadata">

**Author:** ![DarkGagan](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darkgagan/32/4093_2.png) [@DarkGagan](https://www.debian-fr.org/u/DarkGagan)\
**Post date:** [Octobre 7, 2020, 12:16 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/2 "2020-10-07T12:16:09Z")

</div>

Salut,

Je mets habituellement ceci:

[Code] **B1. Modifications du php.ni pour affichage des erreurs, date et PHAR**  
_Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité a votre convenance, le but c’est d’éditer le fichier `/etc/php/7.0/apache2/php.ini`_

```auto
mousepad /etc/php/7.3/apache2/php.ini

```

_`Par exemple avec le bureau KDE :`_ su kwrite /etc/php/7.3/apache2/php.ini

Commenter cette ligne en ajoutant le point virgule ; devant

```auto
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

```

Ajouter _(pour afficher les erreurs d’exécution des scripts et les erreurs E\_STRICT)_

```auto
error_reporting = E_ALL | E_STRICT

```

Commenter cette ligne en ajoutant le point virgule ; devant

```auto
;display_errors = Off

```

Ajouter _(Pour afficher les erreurs à l’écran)_

```auto
display_errors = On

```

Rechercher

```auto
;date.timezone =

```

Ajouter _(Pour afficher le_ fuseau horaire de Paris)

```auto
date.timezone = Europe/Paris

```

Rechercher

```auto
[Phar]; http://php.net/phar.readonly;phar.readonly = On

```

Ajouter _(Permet la création des archives Phar)_

```auto
phar.readonly = Off

```

Puis pour relancer le serveur

```auto
service apache2 restart ou systemctl reload apache2

```

Dans le phpinfo.php error\_reporting est passé de 22527 à 32767[/code]

Extrait de cette page: [http://jc.etiemble.free.fr/abc/index.php/trucs-astuces/lamp/debian10php73](http://jc.etiemble.free.fr/abc/index.php/trucs-astuces/lamp/debian10php73)  
Mais qu’on retrouve dans d’autres tutos d’installation de la pile lamp.

---

<div class="post-metadata">

**Author:** ![Acksop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/acksop/32/8207_2.png) [@Acksop](https://www.debian-fr.org/u/Acksop)\
**Post date:** [Octobre 7, 2020, 3:46 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/3 "2020-10-07T15:46:22Z")

</div>

il me semble pas que ce soit très sécurisé pour un serveur de développement.  
Théoriquement on n’affiche pas les erreurs et la signature du serveur. Mais bon pour un serveur de developpement ca passe.

Là ou je ne sais pas trop ou chercher c’est au niveau de l’optimisation des ressources, j’ai ouie dire qu’il fallait faire un calcul précis pour la consommation. Seulement je n’arrive pas a retrouver l’info…

Le truc c’est que j’utilise aussi docker pour l’un des domaine et je sais que cela peut poser quelques problèmes pour l’optimisation. 🙂

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Octobre 7, 2020, 5:32 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/4 "2020-10-07T17:32:20Z")

</div>

Tout d’abord quelques question ?

- Apache MPM oui mais lequel event, worker, prefork ?
- PHP ou PHP-fpm ?
- Qu’entends-tu par j’ai du mal à accéder à ma plateforme ?

à moins que ce soit secret c’est quoi le domaine ? as-tu tous simplement essayer avec [https://developers.google.com/speed/pagespeed/insights/](https://developers.google.com/speed/pagespeed/insights/)

Pour le restant que tu utilise LXC/Docker ou autre peut importe le fonctionnement reste pareil (a peux de chose près).

---

<div class="post-metadata">

**Author:** ![Acksop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/acksop/32/8207_2.png) [@Acksop](https://www.debian-fr.org/u/Acksop)\
**Post date:** [Octobre 12, 2020, 4:43 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/5 "2020-10-12T16:43:08Z")

</div>

Coucou Clochette!

Merci pour toutes tes questions, je n’ai pas eu le temps de trop revenir ici pendant la semaine dernière, je quittait un poste pour un nouveau ce lundi.

Alors en fait, ma plate-forme est sur un apache2 qui utilise `mpm_prefork`, que je n’ai malheureusement pas trop configurer pour le coup, dans mes souvenir j’avais modifier le nombre de fork en suivant un tuto que je ne retrouve pas dans mes marques pages.

Cependant j’ai un `proxypass` qui redirige `http://besançon25.fr` (le domaine en question) sur un docker où tourne une image `php:7.3.15-apache-stretch` donc techniquement j’ai bien deux apache qui tourne et qui se relayent les requêtes.

Concernant php, l’image docker tourne en `mod-php` tout comme l’apache qui redirige les requêtes sur docker par le biais du port spécifique. Pas de `php-fpm` de ce coté là… Je ne sais pas si ça arrangerais les choses…

Pour tout te dire quand j’ai lancé l’outil d’audit de `myRankingMetrics`, ma plate-forme était inaccessible dans quasiment 100% des cas, ainsi que les autres domaines qui tournait sur l’apache frontal. Cependant comme tu peut le voir sur le graphique plus haut, les ressources n’étaient pas au max de ses capacités. D’où ma question d’optimisation.

Non, non, le domaine n’est pas secret, loin de là, mais il as été codé il y a longtemps et j’ai fait pas mal de modif’ au fur et a mesure du temps dessus. Par contre il assez gourmand en bande passante : je n’ai absolument pas optimiser les css et js que j’utilise dessus, et j’utilise réellement beaucoup de lib différentes. Ceci dit la génération de la page html avec mon architecture php est quand a elle plutôt rapide, voir très rapide.

> [@Clochette](#):
>
> Pour le restant que tu utilise LXC/Docker ou autre peut importe le fonctionnement reste pareil (a peux de chose près).

Là je ne suis pas trop d’accord, ici j’ai un Reverse Proxy qui me renvois les requêtes depuis un apache Frontal. je mettrait ma main a couper que ca joue… bon enfin juste sous un couteau en plastique, faut pas être fou, j’en ai besoin de mes mimimes ! 🙂

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Octobre 12, 2020, 7:11 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/6 "2020-10-12T19:11:24Z")

</div>

> [@Clochette](#):
>
> Pour le restant que tu utilise LXC/Docker ou autre peut importe le fonctionnement reste pareil (a peux de chose près).

Je persiste et signe, c’est pas de l’émulation, le service ne tournerais pas mieux en natif, maintenant ça ajoute de la complexité.

> [@Acksop](#):
>
> Concernant php, l’image docker tourne en `mod-php` tout comme l’apache qui redirige les requêtes sur docker par le biais du port spécifique. Pas de `php-fpm` de ce coté là… Je ne sais pas si ça arrangerais les choses…

Pas dans l’absolu, mais utilisais du php-fpm est tout de même plus aisé (quand c’est possible) à régler .

> [@Acksop](#):
>
> Alors en fait, ma plate-forme est sur un apache2 qui utilise `mpm_prefork` , que je n’ai malheureusement pas trop configurer pour le coup, dans mes souvenir j’avais modifier le nombre de fork en suivant un tuto que je ne retrouve pas dans mes marques pages.

A moins d’avoir une réelle obligation le MPM prefork pour moi est le plus gourmand, l’event et le worker sont bien moins gourmand.

> [@Acksop](#):
>
> Cependant j’ai un `proxypass` qui redirige `http://besançon25.fr` (le domaine en question) sur un docker où tourne une image `php:7.3.15-apache-stretch` donc techniquement j’ai bien deux apache qui tourne et qui se relayent les requêtes.

Tu pourrais avoir un répartisseur de charge, du Haproxy voir même du Nginx ou/et du WAF que ce serait quasi pareil, si c’est bien réglé les requêtes vont jusqu’à bon terme.

> [@Acksop](#):
>
> Pour tout te dire quand j’ai lancé l’outil d’audit de `myRankingMetrics` , ma plate-forme était inaccessible dans quasiment 100% des cas, ainsi que les autres domaines qui tournait sur l’apache frontal. Cependant comme tu peut le voir sur le graphique plus haut, les ressources n’étaient pas au max de ses capacités. D’où ma question d’optimisation.

Lorsque ta plateforme était inaccessible, tu avais quoi dans les logs ?  
Tu ne te serais pas DDOS tous seul par un manque de thread disponible à cause de l’outil de bench ?

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Octobre 14, 2020, 8:52 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/7 "2020-10-14T08:52:02Z")

</div>

Pas tout à fait d’accord avec @Clochette 😉  
Le fait d’utiliser un conteneur diminue probablement un peu les performances.  
Le module PHP d’Apache (mod\_php) impose l’utilisation du mpm\_prefork et c’est une combinaison beaucoup, vraiment beaucoup, moins performante que PHP-FPM (avec fcgid) et le mpm\_event.

---

<div class="post-metadata">

**Author:** ![Acksop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/acksop/32/8207_2.png) [@Acksop](https://www.debian-fr.org/u/Acksop)\
**Post date:** [Octobre 15, 2020, 5:49 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/8 "2020-10-15T17:49:31Z")

</div>

ok, tout ça je ne savais pas…  
j’ai regarder la conf de l’apache frontal (mpm\_prefork)

```
<IfModule mpm_prefork_module>
        StartServers 2
        MinSpareServers 1
        MaxSpareServers 3
        MaxRequestWorkers 12
        MaxConnectionsPerChild 3
</IfModule>

```

Ensuite pour l’apache sous docker (mpm\_prefork aussi)

```
<IfModule mpm_prefork_module>
	StartServers 5
	MinSpareServers 5
	MaxSpareServers 10
	MaxRequestWorkers 150
	MaxConnectionsPerChild 0
</IfModule>

```

Quand à savoir si je ne me suis pas DDOS tout seul, je n’en suis pas sur, mais ça se pourrait … 🙃

Pour les logs, je t’avouerais que je n’ai pas eu le grand reflexe de regarder tout de suite … Je vais fouiller un peu pour voir si je les retrouve…

---

<div class="post-metadata">

**Author:** ![DarkGagan](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darkgagan/32/4093_2.png) [@DarkGagan](https://www.debian-fr.org/u/DarkGagan)\
**Post date:** [Octobre 17, 2020, 6:31 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/9 "2020-10-17T06:31:28Z")

</div>

[Hors-sujet]

> [@Acksop](#):
>
> je mettrait ma main a couper que ca joue… bon enfin juste sous un couteau en plastique, faut pas être fou

Déconne pas, ça existe!

> **[Westmark Couteau à gâteau et Pelle à tarte, extra-large, longueur : 29 cm,...](https://www.amazon.fr/Westmark-Couteau-g%C3%A2teau-extra-large-longueur/dp/B01AT5A3Z2)**
>
> Le couteau à gâteau et Pelle à tarte avec lame droite et large en plastique pour couper les gâteaux, idéal pour couper dans/sur des plaques/moules de cuisson revêtus, convient également pour couper et diviser des têtes de laitue entières - Prise en...

Alors en appuyant un peu fort ça peut peut-être marcher… 😂

[/Hors-sujet]

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Octobre 17, 2020, 6:43 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/10 "2020-10-17T06:43:24Z")

</div>

[MaxRequestWorkers](https://httpd.apache.org/docs/2.4/fr/mod/mpm_common.html#maxrequestworkers) 150

Si tu fais des tests de montée en charge ou si simplement ton site commence à générer pas mal de trafic tu va vite être bloqué par cette directive qui limite le nombre de requêtes simultanées.

D’où, entres autres, l’interêt d’utiliser le MPM _event_, ou _worker_ sur un serveur en production et d’ajuster cette directive (et les autres) à la charge potentielle du serveur.

Un page pas mal faite sur ce type d’optimisation :

> **[Apache Performance Tuning: MPM Directives | Liquid Web](https://www.liquidweb.com/blog/apache-performance-tuning-mpm-directives/)**
>
> In our series, we explore how to get the most out of your server through performance tuning in Apache. Our third tutorial explores Apache MPM Modules and recommended directive settings for environments.

---

<div class="post-metadata">

**Author:** ![Acksop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/acksop/32/8207_2.png) [@Acksop](https://www.debian-fr.org/u/Acksop)\
**Post date:** [Novembre 25, 2020, 9:33 UTC](https://www.debian-fr.org/t/optimisation-apache2/82994/11 "2020-11-25T21:33:48Z")

</div>

Hello @Clochette, @Bruno1,@DarkGagan !

Désolé, j’ai eu beaucoup de travail ces derniers temps, surtout que j’ai changé de poste.

Suite a ce que disait Clochette j’ai fait quelques test mais impossible de passer apache avec mpm\_event et PHP-FPM…  
pourtant j’ai suivi pas mal de tuto bien expliquer mais je tombais toujours sur une erreur qui empêchais de démarrer le service apache2 … 😢

Par contre j’ai modifier les données du mpm\_prefork pour les deux apache2 (docker y compris) pour leur faire accepter ces configs:

```auto
<IfModule mpm_prefork_module>
        StartServers 4
        MinSpareServers 20
        MaxSpareServers 40
        MaxRequestWorkers 200
        MaxConnectionsPerChild 4500
</IfModule>

```

```auto
<IfModule mpm_prefork_module>
	StartServers 5
	MinSpareServers 5
	MaxSpareServers 10
	MaxRequestWorkers 150
	MaxConnectionsPerChild 0
</IfModule>

```

Comment trouvez-vous cette config ?
