Archives de catégorie : Informatique

Comment j’ai drastiquement réduit le temps de réponse d’un count(*) sur une View Mysql

Après des années à ne pas comprendre pourquoi le count(*) était aussi long sur ma base à partir du moment où je la comptais à partir d’une View, j’ai drastiquement accéléré la requête. Quand je dis drastiquement je suis passé d’une dizaine de seconde à du quasi instantané et la consommation mémoire de la base a chu. L’analyse me montrait que le count(*) de la table principale de la view se faisait sur l’index alors que le count(*) sur la view déclenchait un full scan.

Dans un premier temps j’ai réécrit la view pour passer de jointures à gauche en étoile à des jointures en cascade, au passage un jointure à gauche est devenu une jointure normale. Cette modification améliorait un chouia le temps de réponse mais pas de manière transcendante.

Puis je suis tombé sur un article qui expliquant que l’opimiseur Innodb lors d’un count(*) n’utilisait pas le primary index, la répartition de celui-ci n’étant pas optimal, s’il y a un secondary index c’est celui-ci qui est utilisé sinon l’optimiseur cherche à déterminer quelle est la meilleur colonne pour le count(*).

Je n’y croyais pas mais effectivement le rajout d’un index « qui ne sert à rien mais sur une colonne petite » (dans mon cas le code postal) a suffit pour obtenir un temps de réponse canon pour le count(*) sur ma table de plus de 2 millions d’enregistrement.

Un grand Merci à Aaron Francis pour son éclairant article Is COUNT(*) slow in MySQL?

Gdrive c’est sympa ….quand ça marche

J’utilise Google Drive pour partager des vidéo d’une caméra. Au début ça fonctionnait super, pas de soucis. Mais peu à peu j’ai eu de plus en plus souvent le message « impossible de lire la vidéo ». et toutes les manip que Google propose consiste à supprimer le compte ou le cache sur l’appareil. Mais lorsque tous les appareils sont concernés ?

Ca me rappelle un strip de Dilbert https://dilbert.com/strip/2019-12-10

Et bien c’est que le problème est en amont. A noté que lors des téléchargement il faut parfois s’y prendre à plusieurs fois et qu’une fois la video téléchargés on peut effectivement la visionner. Donc le problème est bien dans Google Drive probablement des saturations soit réseau soit disque. Donc 15Go gratuit mais ça ne donne pas l’envie de payer pour plus.

 

Petit complément sur mon mobile j’ai ajouter VLC et sur Drive j’utilise la fonction ouvrir avec et là je peux lire la vidéo. Donc le pb est bien dans les applications google drive et peut être dans les traitements effectués par google au moment du dépôt des video. Le problème semble m’avoir touché le 19 décembre au matin.

mise à jour du 11 janvier.

Le problème de visualisation des vidéos semble corrigé .. mais maintenant c’est le délais d’affichage sur le Drive des fichiers transmis qui est long très long trop long. Et encore plus long sur les ressources partagées. il faut des heures voir des demi-journées pour retrouver les fichiers déposés.

Cron, sssmtp, Orange et Gmail

J’avais remarqué que les mails de cron émis par ssmtp vers mon compte gmail ne fonctionnait plus. Plus exactement les mails partaient sans anomalies mais n’arrivaient jamais. Sur mon VPS je suis passé à Exim et là après le bon réglage des SPF c’est nickel.

Dans le cadre de l’installation d’un raspberry sur un clé 4g il fallait oublier la configuration du SPF et revenir à une solution plus légère. Sur le net il y a pas mal de documentation concernant cette configuration mais toutes ne fonctionnent pour ce qui est du relais des messages du cron. La clé pour avoir un bon entête consiste au bon positionnement de Full Name de root, du revaliases de ssmtp et du passage à No de FromLineOvewwrite dans ssmtp.conf.

ce qui donne chez moi

pi@raspicam:~ $ more /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=monmail@domain.tld
 
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.orange.fr:465
useTLS=YES
authUSER=lemail@orange.fr
authPASS=lepass
 
# Where will the mail seem to come from?
rewriteDomain=orannge.fr
 
# The full hostname
hostname=raspicam
 
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=NO
 
pi@raspicam:~ $ more /etc/ssmtp/revaliases
# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:monmail@orange.fr:smtp.orange.fr:465
pi:monmail@domain.tld:smtp.orange.fr:465
 
pi@raspicam:~ $ grep root /etc/passwd
root:x:0:0:raspicam,,,:/root:/bin/bash

la modification de du full name se fait pas sudo chfn -f ‘le pseudo’ root

Un peu de downtime (passage de stretch en buster)

Et oui le passage dans la nouvelle version stable de Debian ne s’est pas fait sans douleur 🙂

Mais elle me permettra de soumettre à fail2ban le flux ipv6.

La source du problème a été les modification de lighttpd notamment le changement de noms des helper en perl. Le deuxième problème était lié à des nouveau contrôles dans le lighttpd.conf livré.

Les réglages de la section parseopts sont visiblement trop contaignants et sont incompatible avec l’url rewiting que j’utilise.

Serveur d’impression raspberry pi zeroW et Livebox

Et hop

Je viens de mettre en service un nouveau serveur d’impression à base d’un raspeberry pi zero w, avec les câbles  alim boitier et carte SD j’en ai pou approximativement 30€.

Au niveau de la configuration il suffit de rajouter à la raspbian le paquet p910nd. Mettre à jour le fichier /etc/default/p910nd

# Printer number, if not 0
P910ND_NUM=""
# Additional daemon arguments, see man 8 p910nd
P910ND_OPTS="-f /dev/usb/lp0 -b"


# Debian specific (set to 1 to enable start by default)
P910ND_START=1

Enfin presque p910nd ne fonctionne pas en ipv6 et windows10 cherche à imprimer en ipv6, il faut donc au niveau de la livebox ou du pi fixer une adresse ipv4 fixe et utiliser cette adresse ip au lieu du nom du serveur.

lighhttpd et traq (ou le rewrite [QSA])

le passage en php7 a été l’occasion de revoir l’installation de traq et à cette occasion je me suis aperçu de dysfonctionnement dans la partie administration. En fait ma règle de rewrite ne passait pas la Query string.
La solution est de mimer le [QSA] d’apache la règle ne s’invente pas …

$HTTP["host"] =~ "^(domain.tld)" {
        url.rewrite-if-not-file = (
          "/traq/([^?]*)(?:\?(.*))?" => "/traq/index.php/$1?$2",
        ),
}

une petite modification est nécessaire aussi pour le bon fonctionnement en php7.0 et pour finir rajouter une méthode manquante dans traq/vendor/traq/controllers/app_controller.php à l’intérieur de la définition de la classe app_controller

   /**
     * Used to display the 404 page.
     */
    public function show_404()
    {
        header("HTTP/1.0 404 Not Found");
        $this->render['view'] = 'error/404';
        $this->render['action'] = false;
    }

Ca marche du feu de dieu … temps pour passer à autre chose

Je dois avouer que le passage sur VPS me donne pleinement satisfaction le blog fonctionne du feu de dieu … plus rien à voir avec l’hébergement mutualisé précédent.
Donc j’ai pu tester le blog sur une tablette toutte fraîche et là aussi l’affichage a été du quasi instantané.
Donc le moment est peut être venu d’évoluer un peu et d’aller vers de l’adaptative design. Le très cher à mon coeur paalam est peut être en train de vivre ses derniers jours sur mon site. Bien sur je pourrais essayer de le réécrire mais je n’en ai franchement pas le temps donc je pense partir sur un thème tout fait mais facilement adaptable.

Avez vous rencontré des perturbations ?

Ce mois-ci j’ai procédé au basculement de mes sites sur un VPS en cumulant un changement d’hébergeur y compris pour les noms de domaine et les mails.
L’opération a été ma foi assez lourde et je ne suis pas sur que tout se soit passé « sans coupure ».
Les points les plus compliqués ont été par ordre chronologique :
le réglage de fail2ban (pas encore terminé)
la mise en place d’Https (à peaufiner à ce jour)
et les déménagements des mails là ça a a été un peu panique.

Donc je ne dirais qu’un mot mainteant : « Enjoy »

attention ne pas confondre – no-bot registration

Sur wordpress.org un nouveau plugin porte le nom de no-bot-registration mais ce n’est pas le mien, le fonctionnement est totalement différent. Ma version me donne en tout cas satisfaction.
Donc si vous utilisez ma version et que vous faites une mise à jour automatique il faut avoir en vue que vous changerez de code.
ma version : no-bot-registration l’original
celui présent sur wordpress.org : autre chose qui s’appelle no-bot-registration