Quelques liens pour comprendre certaines optimisations de serveur web

Le time-wait et pourquoi ne pas faire du recycle de socket: https://vincent.bernat.im/fr/blog/2014-tcp-time-wait-state-linux Gestion du backlog: http://veithen.github.io/2014/01/01/how-tcp-backlog-works-in-linux.html Gestion des limites https://lzone.de/cheat-sheet/ulimit https://unix.stackexchange.com/questions/345595/how-to-set-ulimits-on-service-with-systemd Un petit script python pour tracer les limites import platform if ‘linux’ in platform.system().lower(): import resource # Linux only limit_nofile = resource.getrlimit(resource.RLIMIT_NOFILE) limit_nproc = resource.getrlimit(resource.RLIMIT_NPROC) print ‘Max number of opened files allowed:’, limit_nofile print […]

Modifier la limite de fichiers sur ubuntu 16.x pour nginx et fpm

Le système de gestion des limites a évolué et utiliser /etc/security/limits.conf n’est plus valide sur ubuntu 16 car le système de gestion de service est maintenant basé sur systemd. Le plus frustrant c’est qu’à première vue rien a changé : dans /etc/init.d/ on retrouve nos scripts de lancement classique mais effectivement on observe un if […]

Mémos et liens utiles pour améliorer les performances d’nginx et php-fpm

Faut-il ou non mettre un cache ? Il faut se poser la question de la donnée reçue en réponse de la requête : est-ce que la donnée doit être rafraîchie à chaque requête ou non. Cette question s’applique aussi bien a des données dynamiques que statiques, car une donnée statique peut être mise à jour […]

Limiter le trafic externe mais autoriser le trafic interne sur nginx

Le tuto nginx est plutôt « léger » sur l’explication concrète de cette configuration de limitation, voici donc quelques compléments d’explication : geo $limit { default 1; 10.0.0.0/8 0; 192.168.0.0/24 0; } map $limit $limit_key { 0 «  »; 1 $binary_remote_addr; } limit_req_zone $limit_key zone=req_zone:10m rate=5r/s; server { location / { limit_req zone=req_zone burst=10 nodelay; # … } […]

Générer une CSR pour une paire de clé/certificat existante via le terminal sur IOS

Cette note peut être utile si vous devez renouveler votre certificat de push ou de distribution sur Apple et que l’outil Keychain rejette la demande de création de CSR sur le certificat existant. Le contournement est d’utiliser le terminal et les bonnes vieilles commandes classiques : exporter la clé privé dans un fichier p12 : […]

Ajouter un certificat de serveur dans AWS IAM

La console IAM ne permet pas de gérer les certificats de serveur qui ont été insérés à la volée dans IAM via l’ELB. Il faut donc passer par l’API : (une fois les pré-requis de l’API installés), exécutez: aws iam upload-server-certificate –server-certificate-name mon.serveur.com.2017 –certificate-body file:///home/cve/ssl/serveur_crt.pem –certificate-chain file:///home/cve/ssl/cert_chain.pem –private-key file:///home/cve/ssl/serveur_key.pem Ensuite vous retrouvez votre nouveau certificat […]

Tracer la latence avec NGINX

Extracted from nginx blog, article from Rick Nelson · January 7, 2016 Using the NGINX Built-In Timing Variables NGINX provides a number of built-in timing variables that you can include in log entries. All are measured in seconds with millisecond resolution. $request_time – Full request time, starting when NGINX reads the first byte from the client and […]

Drawing ASCII dans le message de bienvenue d’une debian

Le fichier /etc/motd est bien pratique pour customiser le message de bienvenue et éviter de se mélanger les pinceaux lorsque l’on administre un petit lot de serveur. L’outil Figlet permet de faire un drawing ASCII en une ligne de commande : $ figlet Mon-Serveur l’option -f permet de choisir le style de la police utilisée. […]

Résolution des liens symboliques avec Xdebug

Dans une configuration Xdebug + IDE (eclipse, phpStorm…) si vous commencez à avoir des liens symboliques, l’IDE ou xdebug commence à perdre les pédales sur la résolution des chemins ce qui fait que les breakpoints de l’IDE ne sont plus détectés. Voici une technique pour continuer à utiliser le principe de lien symbolique et à […]

Un tutoriel sur Gulp pour comprendre les dépendances, l’utilisation de tâches asynchrones ou synchrones

J’ai pris de le temps de faire ce tutoriel car je vois trop souvent des incompréhensions sur ces notions de tâches synchrones et asynchrones. En complément je rappelle le principe de dépendances dans gulp. Les dépendances ne sont pas ordonnées, seul la fin de la tâche déclenche l’exécution de la suivante, il faut donc s’assurer […]