Sujet: Requêtes qui bloquent MySQL - comment limiter les dégâts
20/09/2015 @ 10:21:08: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
[mysqld]
datadir=/home/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
slow_query_log=1
slow_query_log_file=/var/log/mysql-slow.log
thread_cache_size = 20
max_connections = 50
query_cache_size = 1024M
query_cache_limit = 128M
table_cache = 512
tmp_table_size = 400M
max_heap_table_size = 400M
read_buffer_size = 10M
sort_buffer_size = 20M
read_rnd_buffer_size = 1M
ft_stopword_file=""
ft_min_word_len=3
transaction-isolation = READ-COMMITTED

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


le explain:

  1. id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra   
  2. 1  SIMPLE  p  ALL  PRIMARY,poster_id  NULL NULL NULL 32522  Using where 
  3. 1  SIMPLE  u  eq_ref  PRIMARY  PRIMARY  3  antpphpbb2.p.poster_id  1  Using where
20/09/2015 @ 21:05:52: zion: Requêtes qui bloquent MySQL - comment limiter les dégâts
Tu as des tables InnoDB?

Et de la mémoire libre?

Sinon, un petit coup de:
innodb_buffer_pool_size = 10048M
Par exemple, ce serait un bon début.
20/09/2015 @ 21:12:48: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
La plupart sont en MyISAM apparemment, y a juste trois tables en InnoDB créées plus récemment (mais aucune dans la DB de phpbb n'est en InnoDB)
Y a plein de RAM libre
Je devrais tout convertir en InnoDB?
20/09/2015 @ 21:23:06: zion: Requêtes qui bloquent MySQL - comment limiter les dégâts
L'avantage avec InnoDB c'est que c'est lent, mais tu sais pourquoi :ddr555:
Non, sérieusement, tu peux forcer sa mise en mémoire, mais ça devrait pas aider à résoudre fondamentalement ton soucis.

Et si tu fais ce query dans ta DB en direct, ça prend aussi longtemps?
21/09/2015 @ 11:01:18: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Quand j'ai fait l'explain hier ça a mis un temps fou, mais c'est aussi phpmyadmin qui avait du mal
À la base le souci c'est aussi phpbb qui fait ce genre de requêtes de merde :oh:
Je vais voir à l'occasion si je peux pas quand même mettre une version plus récente...
21/09/2015 @ 16:46:43: zion: Requêtes qui bloquent MySQL - comment limiter les dégâts
Bah même, pour un ALL sur 32000 row, je vois pas pourquoi ça devrait ramer, à moins que la table ne soit pas en mémoire. Si on parlait d'un demi million de row à la limite, mais là... c'est même pas "énorme".
22/09/2015 @ 08:36:56: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Oui, vu la RAM dispo il devrait avoir tout ça en cache de toute façon (soit directement mysql, soit même au niveau de l'OS si il gère ça comme sous Windows)
04/11/2015 @ 09:16:58: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Je remonte mon sujet, je me dis que je vais tester le max_statement_time (devenu max_execution_time), mais je pense que j'ai une trop vieille version de MySql (5.5 on dirait)
Je peux migrer vers le 5.7 sans risque ? Je fais quoi ? "yum update mysql" ?
04/11/2015 @ 09:36:42: zion: Requêtes qui bloquent MySQL - comment limiter les dégâts
Fait un mysqldump avant, histoire de pouvoir réimporter le cas où avec une install clean. Et sinon, ouaip, go go yum update :wink:
04/11/2015 @ 19:13:27: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Ouais le backup avant c'est toujours mieux :grin:
Y en a un journalier, mais tant qu'à faire autant le faire juste avant update aussi.
Je ferai ça vendredi ou le weekend pour avoir du temps si ça foire :oh:
08/11/2015 @ 12:03:34: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
hmm apparemment dans MariaDB il faut passer à la version 10.1.1 pour ça :
https://mariadb.com/kb/en/mariadb/aborting-statements/
J'ai la 5.5... et si je suis bien je dois désinstaller celle-là et installer la 10 à la place ?
https://mariadb.com/kb/en/mariadb/upgrading-from-mariadb-55-to-mariadb-100/
et il faut aller rajouter le package dans le repository pour pouvoir faire ça :
http://www.liquidweb.com/kb/how-to-upgrade-mariadb-5-5-to-mariadb-10-0-on-fedora-20/
ça semble juste tout ça ?
08/11/2015 @ 12:26:17: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Bon j'ai fait l'upgrade... il retrouve pas tout seul les DB ? :oh:
08/11/2015 @ 12:31:54: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
bon évidemment s'il vire mon my.cnf ça aide pas
08/11/2015 @ 12:54:26: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Bon je pense que j'ai tout réparé, après un problème de droit d'accès bien comique : il voulait pas faire l'upgrade parce que problème d'accès root, mais pour aller modifier les droits d'accès il fallait d'abord que j'upgrade les tables :oh:
08/11/2015 @ 16:01:29: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Tiens quand on désinstalle MySQL/MariaDB il dégage postfix avec ; c'est toujours bon à savoir :kiki:
(mais il ne revient pas tout seul quand on remet une autre version de MySQL/MariaDB)


edit: c'est vrai qu'il m'avait parlé de dépendances entre MySQL et postfix, mais je savais pas que ça impliquait de virer postfix :tinostar:
Y avait une dépendance avec un autre truc mais je ne sais plus quoi par contre :figti: comment trouver ce qu'il a viré d'autre ? :sweat:
09/11/2015 @ 11:57:39: zion: Requêtes qui bloquent MySQL - comment limiter les dégâts
Quand tu as fait le yum -e, il t'a prévenu de ce qu'il virait. Il y a une dépendance car PostFix utilise MySQL dans certains cas pour la liste des alias. Mais je doute que tu en ais besoin concrètement.

Tu as un historique dans le log en principe :petrus:
09/11/2015 @ 12:09:29: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Comme je disais, il m'a en effet parlé de dépendance, mais ça ne me semblait pas clair qu'il virait l'autre module :grin: (bon maintenant je le sais :o)

Hier le serveur semblait plus rapide, je ne sais pas si c'est un effet placebo, le fait que la version 10 soit plus rapide, ou parce que c'est une install fraîche de MariaDB. À voir si les blocages reviennent.

Pour le log :

Nov 08 12:19:14 Erased: mysqltuner-1.4.0-1.fc20.noarch
Nov 08 12:19:15 Erased: 1:mariadb-galera-server-5.5.41-1.fc20.x86_64
Nov 08 12:19:16 Erased: 1:mariadb-5.5.43-1.fc20.x86_64
Nov 08 12:19:16 Erased: perl-DBD-MySQL-4.024-1.fc20.x86_64
Nov 08 12:19:17 Erased: 2:postfix-2.10.5-1.fc20.x86_64
Nov 08 12:19:18 Erased: 1:mariadb-libs-5.5.43-1.fc20.x86_64

rien d'autre de grave je suppose, le tuner je le réinstallerai à l'occasion
17/11/2015 @ 18:54:38: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Bon y a quand même un truc qui doit foirer quelque part : php n'arrive plus à envoyer de mail.
La fonction mail renvoit False
Je ne sais pas pourquoi, je n'ai pas de message d'erreur
php.ini n'a pas changé
une idée ?

edit: en console par contre j'ai droit à
sendmail: Cannot open mail:25


re-edit: après de longues recherches j'ai changé dans ssmtp.conf "mailhub=mail" en "mailhub=localhost" ; avant ça marchait avec mail pourtant...
17/11/2015 @ 19:59:04: antp: Requêtes qui bloquent MySQL - comment limiter les dégâts
Par contre une question quand même : pourquoi quand je redéfinis le header "From" il n'en tient plus compte ?
Y a une option quelque part ?
Parce que maintenant mes mails viennent de "lighttpd web server", c'est un peu moche :oh:
J'ai essayé l'option "-f" suivi de l'adresse en param de la fonction mail, mais ça ne semble rien changé
18/11/2015 @ 12:06:02: zion: Requêtes qui bloquent MySQL - comment limiter les dégâts
yum remove sendmail
yum install postfix

:petrus:
Retour