Salut,
j’ai configuré mes serveurs d’arrière plan PHP « backends » en HTTP/2 ; çà fonctionne bien, exemple : ww1 , ww2 et ww3 (dot) ZW3B (dot) Net
J’ai dû supprimé les « php_value
» et « php_flag
» de mes « .htaccess
» pour les ajouter dans le fichier « .user.ini
» à la racine du/des sites web :
De cette façon (sans les php_value
ou php_flag
) :
root@ww1.lb1.srv.fr.lab3w.com:~ # cat /var/pro/web_sites/zw3b_fr/www/web/.user.ini
########################################################
# SESSION
#php_value session.save_path "/var/pro/web_sites/zw3b_net/www/tmp/"
session.save_path "/var/pro/web_sites/zw3b_net/www/tmp/session/"
#php_flag register_globals off
# SESSION
########################################################
########################################################
# ERREURS AFFCIHAGE
#php_value display_errors 1
#display_errors 1
#php_value track_errors 1
#php_value display_startup_errors 1
#php_flag display_errors 1
#php_flag display_startup_errors 1
#php_flag html_errors 1
#php_flag log_errors 1
#php_flag xdebug.force_display_errors 1
#php_flag xdebug.force_error_reporting on
#php_flag xdebug.show_error_trace on
#php_flag xdebug.default_enable 1
#php_flag xdebug.auto_trace 1
#php_flag xdebug.remote_enable 1
#php_value xdebug.remote_host "your_ip_without_quotes"
#php_value xdebug.remote_port 9000
#php_value xdebug.idekey PHPSTORM
#php_flag xdebug.remote_autostart on
# ERREURS AFFCIHAGE
########################################################
########################################################
# FORMULAIRE UPLOAD
# Augmente la variable upload via formulaire (marche pas pour php5)
#php_value upload_max_filesize 150M
#php_value post_max_size 150M
upload_max_filesize 150M
post_max_size 150M
# Maximum execution time of 300 seconde (default 30)
#php_value max_execution_time 300
max_execution_time 300
# Memory Limit
#php_value memory_limit 128M
memory_limit 128M
########################################################
Et, j’ai ajouté dans /etc/apache2/apache2.conf
ou le .htaccess
des sites :
<Files ".user.ini">
Require all denied
</Files>
Ainsi que pour mes serveurs d’extrémité avant « frontends », j’ai aussi configuré en HTTP/2.
Je vois bien dans les logs Apache des « backends » le protocole "HTTP/2.0" OK
:
XXX.XX.XXX.183 - - [22/Jan/2025:10:17:06 +0100] "GET /music/deep-house/yousuke-yukimatsu-boiler-room-tokyo HTTP/2.0" 200 11051 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"
Cà charge bien mieux les sites web, (beaucoup) plus rapidement je trouve.
CF Page → « Balancer manager », celle du site ¿How to? ‹ Or › ¿What to do?
Computer documentation on the Art of systems, networks and InterNet solutions.
3 des « Frontends » UK|CA|FR Load balancers → 3 en « backends » OK + 1 Stand By OK - config HTTP/2
Romain → Mon portfolio se charge trop rapide
Bonne journée à toutes et à tous !
Cà claque Hypertext Transfer Protocol/2 (HTTP2), excellent !
@+
TODO Check → Directive MaxRequestWorkers
:
mpm_common - Serveur HTTP Apache Version 2.4
La directive MaxRequestWorkers
permet de fixer le nombre maximum de requêtes pouvant être traitées simultanément. Si la limite MaxRequestWorkers
est atteinte, toute tentative de connexion sera normalement mise dans une file d’attente, et ceci jusqu’à un certain nombre dépendant de la directive ListenBacklog
. Lorsqu’un processus enfant se libèrera suite à la fin du traitement d’une requête, la connexion en attente pourra être traitée à son tour.
Pour les serveurs non threadés ( c’est à dire utilisant prefork
), la directive MaxRequestWorkers
définit alors le nombre maximum de processus enfants qui pourront être lancés simultanément pour traiter les requêtes. La valeur par défaut est 256
; si vous l’augmentez, vous devez aussi augmenter la valeur de la directive ServerLimit
.
Pour les serveur threadés et hybrides (utilisant par exemple event
ou worker
), MaxRequestWorkers
définit alors le nombre total de threads qui seront disponibles pour servir les clients. Dans le cas des MPMs hybrides, la valeur par défaut est 16
(directive ServerLimit
) multiplié par la valeur 25
(directive ThreadsPerChild
). Par conséquent, pour affecter à la directive MaxRequestWorkers
une valeur qui requiert plus de 16 processus, vous devez aussi augmenter la valeur de la directive ServerLimit
.
Le nom de la directive MaxRequestWorkers
était MaxClients
avant la version 2.3.13. Cet ancien nom est encore supporté.
HTOP des serveurs ZW3B LAB3W après HTTP/2 - çà consomme des ThreadsPerChild :
J’ajoute çà les stats « Youtubeur » d’une vidéo. Je trouve çà très bizarre, je ne sais quand est-ce qui refresh, si c’est « instantané » c’est bizarre, 1 vue depuis 4h pour la vidéo du dessus.
« Sur une période initiale de 4 heures 3 minutes » me disent t’ils, 1 vue.
« Sur une période initiale de 4 heures 48 minutes » me disent t’ils, 2 vues.
Je vous ajoute ces statistiques « Par jour » et « Par minutes » (style un MRTG toutes les 10min) de mon utilisation de l’API YouTube Data v3.
À la dernière minute 2025-01-22 15h20, il y a 13 289 requêtes qui sortent des « iframes » vers Youtube de mes sites web
Je suis à 1 million 220 mille 117 requêtes depuis 9h ce matin, çà marche encore plus fort en HTTP/2
Vous n’avez pas d’anti-Youtube à priori…
Depuis le 11.14 j’ai activé 4 Frontaux à la place d’1, j’ai re.re.refais une demande pour une augmentation de pouvoir d’utilisation
En sachant qu’il y a 86 400 secondes dans une journée.
Je fais quand même 60 milles et quelques demandes et de « Mise À jour » Youtube par jour
Malgré que j’ai mis en place un système de cache (sur certaines données, les infos des chaines, sur 12h de cache) pour ne pas « taper » tout le temps, pour chaque internautes ; pour soulager Youtube Et, pour plus de rapidité sur mes sites « clients » web.
Normalement, j’ai 0% d’erreur ; c’est parce que j’atteins la limite de mes quotas journalier depuis quelques jours.
Comme je leur ai envoyé (à Youtube), je suis bloqué depuis le 11 Ils vont me débloquer bientôt, normalement
- 24/01/2025 Limite atteinte à 6h02min 03s - 2 974 819
- 23/01/2025 Limite atteinte à 2h07min 34s - 2 958 104
- 22/01/2025 Limite atteinte à 2h15min 57s - 2 947 072
- 21/01/2025 Limite atteinte à 3h17min 35s - 2 927 087
- 20/01/2025 Limite atteinte à 4h06min 35s - 2 949 184
- 19/01/2025 Limite atteinte à 4h11min 20s - 2 999 867
- 18/01/2025 Limite atteinte à 4h09min 48s - 3 007 125
- 17/01/2025 Limite atteinte à 3h42min 48s - 3 011 377
- 16/01/2025 Limite atteinte à 2h30min 45s - 2 987 624
- 15/01/2025 Limite atteinte à 3h34min 15s - 2 947 845
- 14/01/2025 Limite atteinte à 1h15min 08s - 3 002 573
- 13/01/2025 Limite atteinte à 3h40min 15s - 2 950 286
- 12/01/2025 Limite atteinte à 3h07min 37s - 2 829 594
- 11/01/2025 Limite atteinte à 8h57min 37s - 2 903 104
Il me faut vos « ID » ADSense les ami·es Un jour il faudrait en discuter.
Sympa tout çà !
Romain.
J’aime bien cette journée et le HTTP/2 → j’ai pris fort en requêtes de transit (de stream) entre mes sites web et Youtube.
On voit mieux sur les 7 derniers jour ; je suis passé de ~ 12k à 20k minutes - du style
@+
Bonne fin d’journée à tous !
Edit : 2025/01/23 à 8h00 : je vais changer de tactique, çà galère trop.
J’ai changé mes DNS (j’ai désactivé les 2 VPS pour mon « .fr » et mon « .tv »
root@srv.fr.lab3w.com:~ # host www.zw3b.fr
www.zw3b.fr has address 90.5.102.244
www.zw3b.fr has address 158.69.126.137
www.zw3b.fr has IPv6 address 2a01:cb1d:5:af00::1
www.zw3b.fr has IPv6 address 2607:5300:60:9389::1
Donc, çà pointe sur mes 2 serveurs FR ou CA (où il y a les « backends »).
- Quand on arrive sur une des IP FR çà pointe dans les « backends » local au serveur « frontend ». donc en France.
- Quand on arrive sur une des IP CA çà pointe dans les « backends » local au serveur « frontend », donc au Canada.
Çà évite que cela transite par les liens VPN en permanence.
J’ai quand même configuré les serveurs « hors site physique » en mode « parking, de rechange » et/ou « Stand by OK » qui est sollicité que si tous les autres serveurs cibles du jeu de serveurs sont indisponibles.
Pour le serveur FR :
Worker URL |
Route |
RouteRedir |
Factor |
Set |
Status |
Elected |
Busy |
Load |
To |
From |
HC Method |
HC Interval |
Passes |
Fails |
HC uri |
HC Expr |
h2://[fc00:5300:60:9389:15:1:a:10] |
ww1.lb1.ipv10.net |
|
1.00 |
0 |
Init Spar Ok
|
11 |
0 |
3100 |
12K |
0 |
TCP |
5000ms |
2 (0) |
3 (0) |
|
|
h2://[fc00:5300:60:9389:15:2:a:10] |
ww2.lb2.ipv10.net |
|
1.00 |
0 |
Init Stby Ok
|
17 |
0 |
-1200 |
22K |
0 |
TCP |
5000ms |
2 (0) |
3 (0) |
|
|
h2://[fc01::10:126:42:10] |
ww1.home.lab3w.fr |
|
1.00 |
0 |
Init Ok
|
81 |
2 |
-6900 |
75K |
0 |
TCP |
5000ms |
2 (0) |
3 (0) |
|
|
h2://[fc01::10:106:42:10] |
w3a.dc.lab3w.fr |
|
1.00 |
0 |
Init Stby Ok
|
1 |
0 |
5000 |
0 |
0 |
TCP |
5000ms |
2 (0) |
3 (0) |
|
|
Normalement, çà marche bien mieux.
Et, surtout l’info que je voulais remonter ; c’est QUE « Firefox Nightly » déconne complétement ; il va toujours me chercher « www.zw3b.fr » en UK dans mon VPS, çà fait 1 heure que j’ai mis à jour mes DNS dig « google » me retourne les bonnes adresses, depuis Chrome tout fonctionne normalement.
root@vps.uk.ipv10.net:~ # dig ANY www.zw3b.fr @dns.google
; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> ANY www.zw3b.fr @dns.google
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22692
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.zw3b.fr. IN ANY
;; ANSWER SECTION:
www.zw3b.fr. 3600 IN A 158.69.126.137
www.zw3b.fr. 3600 IN A 90.5.102.244
www.zw3b.fr. 3600 IN RRSIG A 8 3 3600 20250222072836 20250123062836 49509 zw3b.fr. nFLZk/xMWDiFjZP9pC+b+6brVNPuvSg9KyAeCgMB/pJd5MCUzSy6Ei2L z33eJJY6ZHwAYoVToSFXiC1L0C0zL4msabvqOmb7hddBy8B9lltNhUXu qsH2SnGBFvtRTfVgQ6sIigkKE/F7BZnoewZKLbvCXcvsRg2opqh6nAIW r/Y=
www.zw3b.fr. 3600 IN AAAA 2607:5300:60:9389::1
www.zw3b.fr. 3600 IN AAAA 2a01:cb1d:5:af00::1
www.zw3b.fr. 3600 IN RRSIG AAAA 8 3 3600 20250222072836 20250123062836 49509 zw3b.fr. scsleopchVmetxRKug/wUtaN8mbKcg8BGcwjje2Zp1+U8G20AUmJVoI2 rBuaL/K5mVDmA3gse2WyGuNOGe4ApNw9RY/6Wk8fH/NKHcRt2U/ImLrJ dQw87LQ48fCbujNyb+bGl4NBJStf/c76jwAOt4intbfO4ArRHO7iaKgv d6Q=
;; Query time: 248 msec
;; SERVER: 2001:4860:4860::8888#53(dns.google) (TCP)
;; WHEN: Thu Jan 23 08:05:20 GMT 2025
;; MSG SIZE rcvd: 462
Qui me retourne bien les 2 adresses, celles de France et celles du Canada - il n’y a plus les IP Allemande et de Grande-Bretagne.
Vu que je parle aussi d’Apache « mod proxy » sur cette page sur HTTP.
Je vous ajoute quelques chose de « super important ».
Si vous « m’était en place » un proxy reverse, il faut autoriser sur les « backends » seulement l’adresse des « frontends » par précaution.
Le Contrôle d’accès d’Apache
Exemple du VHOST en « backends » :
<IfModule mod_ssl.c>
<VirtualHost [2607:5300:0060:9389:15:3:a:10]:443 [fc00:5300:60:9389:15:3:a:10]:443 10.103.150.10:443>
<Location "/">
# Require all denied
# Frontend CA
Require ip 10.69.126.137
Require ip fc00:5300:60:9389::1
# Frontend FR
Require ip 10.106.42.10
Require ip fc01::10:106:42:10
# Frontend DE
Require ip 10.125.133.51
Require ip fc00:41d0:701:1100::6530
# Frontend UK
Require ip 10.128.171.43
Require ip fc00:41d0:801:2000::44f9
# Autoriser les potes qui on le droit d'acceder au backend directement
# Par exemple sur l'addresss ww3.domain.tld
Require ip my_ip
</Location>
[...]
</VirtualHost>
</IfModule>
Ça me fait penser aux balises :
Header set X-Frame-Option: "sameorigin"
Header set X-Content-Type-Options: "nosniff"
Bonne journée.