Lenteurs sur création de factures fournisseurs

Salut tous,

[Ubuntu server 16.04.5]
[PHP 7.0.32-0ubuntu0.16.04.1]
[MySQL Ver 14.14 Distrib 5.7.24]

J’ai fait la MAJ vers la 8.0.4 et depuis j’ai des lenteurs extrêmes uniquement quand je suis dans l’onglet Facturation/Paiement et que je clique dans la colonne de gauche sur Factures fournisseurs/Nouvelle facture.

Si je passe par la fiche fournisseur, c’est ok.

En faisant un top sur le serveur, c’est MySQL qui prend 100% du CPU à ce moment là.

Alors, ça fait ça depuis plusieurs versions, j’avais l’habitude d’attendre 10s environ, mais là c’est plusieurs minutes :unhappy:

Que puis-je faire pour diagnostiquer plus avant et aider à la résolution ?

Pourrait-il y avoir un lien avec ce bug qui n’est pas encore résolu malgré toutes les MAJ depuis ?
www.dolibarr.fr/forum/t/erreur-lors-mise-a-jour-6-0-1-vers-7-0/26878/1

Merci à tous !

Et voici les logs de cette opération précise :

2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  - This is an already logged session. _SESSION['dol_login']=johndoe _SESSION['dol_entity']=1
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT u.rowid, u.lastname, u.firstname, u.employee, u.gender, u.birth, u.email, u.job, u.skype, u.signature, u.office_phone, u.office_fax, u.user_mobile, u.address, u.zip, u.town, u.fk_state as state_id, u.fk_country as country_id, u.admin, u.login, u.note, u.pass, u.pass_crypted, u.pass_temp, u.api_key, u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid, u.statut, u.lang, u.entity, u.datec as datec, u.tms as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.photo as photo, u.openid as openid, u.accountancy_code, u.thm, u.tjm, u.salary, u.salaryextra, u.weeklyhours, u.color, u.dateemployment, u.ref_int, u.ref_ext, u.default_range, u.default_c_exp_tax_cat, c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state FROM llx_user as u LEFT JOIN llx_c_country as c ON u.fk_country = c.rowid LEFT JOIN llx_c_departements as d ON u.fk_state = d.rowid WHERE u.entity IN (0, 1) AND u.login = 'johndoe' ORDER BY u.entity ASC
2019-01-06 21:12:00 INFO    MY.IP.ADD.RESS  fetch_name_optionals_label elementtype=user
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,langs,list,fielddefault,fieldcomputed,entity,enabled FROM llx_extrafields WHERE entity IN (0,1) AND elementtype = 'user' ORDER BY pos
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT param, value FROM llx_user_param WHERE fk_user = 2 AND entity = 1
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT rowid, entity, type, page, param, value FROM llx_default_values WHERE entity IN (1,1) AND user_id IN (0, 2)
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT r.module, r.perms, r.subperms FROM llx_user_rights as ur, llx_rights_def as r WHERE r.id = ur.fk_id AND ur.entity = 1 AND ur.fk_user= 2 AND r.perms IS NOT NULL
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT r.module, r.perms, r.subperms FROM llx_usergroup_rights as gr, llx_usergroup_user as gu, llx_rights_def as r WHERE r.id = gr.fk_id AND gr.entity = 1 AND r.entity = 1 AND gr.fk_usergroup = gu.fk_usergroup AND gu.fk_user = 2 AND r.perms IS NOT NULL
2019-01-06 21:12:00 INFO    MY.IP.ADD.RESS  --- Access to /htdocs/fourn/facture/card.php - action=create, massaction=
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT transkey, transvalue FROM llx_overwrite_trans where lang='fr_FR'
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  Menubase::menuLoad mymainmenu=billing myleftmenu=suppliers_bills type_user=0 menu_handler=eldy tabMenu size=0
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT m.rowid, m.type, m.module, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu, m.url, m.titre, m.langs, m.perms, m.enabled, m.target, m.mainmenu, m.leftmenu, m.position FROM llx_menu as m WHERE m.entity IN (0,1) AND m.menu_handler IN ('eldy','all') AND m.usertype IN (0,2) ORDER BY m.position, m.rowid
2019-01-06 21:12:00 INFO    MY.IP.ADD.RESS  fetch_name_optionals_label elementtype=facture_fourn
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,langs,list,fielddefault,fieldcomputed,entity,enabled FROM llx_extrafields WHERE entity IN (0,1) AND elementtype = 'facture_fourn' ORDER BY pos
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  useLocalTax
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT t.localtax1, t.localtax2 FROM llx_c_tva as t, llx_c_country as c WHERE t.fk_pays = c.rowid AND c.code = 'FR' AND t.active = 1 AND t.localtax1_type <> '0'
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  useLocalTax
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT t.localtax1, t.localtax2 FROM llx_c_tva as t, llx_c_country as c WHERE t.fk_pays = c.rowid AND c.code = 'FR' AND t.active = 1 AND t.localtax2_type <> '0'
2019-01-06 21:12:00 INFO    MY.IP.ADD.RESS  fetch_name_optionals_label elementtype=facture_fourn
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,langs,list,fielddefault,fieldcomputed,entity,enabled FROM llx_extrafields WHERE entity IN (0,1) AND elementtype = 'facture_fourn' ORDER BY pos
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  Form::select_thirdparty_list
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur FROM llx_societe as s WHERE s.entity IN (1) AND (s.fournisseur = 1) ORDER BY nom ASC
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  FactureFournisseur::list_replacable_supplier_invoices
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT f.rowid as rowid, f.ref, f.fk_statut, ff.rowid as rowidnext FROM llx_facture_fourn as f LEFT JOIN llx_paiementfourn_facturefourn as pf ON f.rowid = pf.fk_facturefourn LEFT JOIN llx_facture_fourn as ff ON f.rowid = ff.fk_facture_source WHERE (f.fk_statut = 1 OR (f.fk_statut = 3 AND f.close_code = 'abandon')) AND f.entity = 1 AND f.paye = 0 AND pf.fk_paiementfourn IS NULL AND ff.fk_statut IS NULL ORDER BY f.ref
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  FactureFournisseur::list_qualified_avoir_supplier_invoices
2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT f.rowid as rowid, f.ref, f.fk_statut, f.type, f.paye, pf.fk_paiementfourn FROM llx_facture_fourn as f LEFT JOIN llx_paiementfourn_facturefourn as pf ON f.rowid = pf.fk_facturefourn LEFT JOIN llx_facture_fourn as ff ON (f.rowid = ff.fk_facture_source AND ff.type=1) WHERE f.entity = 1 AND f.fk_statut in (1,2) AND ff.type IS NULL AND f.type != 2 ORDER BY f.ref
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Form::select_conditions_paiements selected=, htmlname=cond_reglement_id
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Form::load_cache_conditions_paiements
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  sql=SELECT rowid, code, libelle as label FROM llx_c_payment_term WHERE entity IN (1) AND active > 0 ORDER BY sortorder
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Form::select_types_paiements , mode_reglement_id, DBIT, 0
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Form::load_cache_types_paiements
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  sql=SELECT id, code, libelle as label, type, active FROM llx_c_paiement WHERE entity IN (1)
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Translate::getLabelFromKey
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  sql=SELECT libelle as label FROM llx_c_paiement WHERE code = 'LCR' AND entity IN (1)
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Translate::getLabelFromKey
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  sql=SELECT libelle as label FROM llx_c_paiement WHERE code = 'PRO' AND entity IN (1)
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  Form::select_comptes
2019-01-06 21:12:08 DEBUG   MY.IP.ADD.RESS  sql=SELECT rowid, label, bank, clos as status, currency_code FROM llx_bank_account WHERE entity IN (1) AND clos = '0' ORDER BY label
2019-01-06 21:12:08 INFO    MY.IP.ADD.RESS  DolEditor::DolEditor htmlname=note_public width= height=80 toolbarname=dolibarr_notes
2019-01-06 21:12:08 INFO    MY.IP.ADD.RESS  DolEditor::DolEditor htmlname=note_private width= height=80 toolbarname=dolibarr_notes
2019-01-06 21:12:08 INFO    MY.IP.ADD.RESS  --- End access to /htdocs/fourn/facture/card.php

Sauf erreur, le point clé se trouve là :

2019-01-06 21:12:00 DEBUG   MY.IP.ADD.RESS  sql=SELECT f.rowid as rowid, f.ref, f.fk_statut, f.type, f.paye, pf.fk_paiementfourn FROM llx_facture_fourn as f LEFT JOIN llx_paiementfourn_facturefourn as pf ON f.rowid = pf.fk_facturefourn LEFT JOIN llx_facture_fourn as ff ON (f.rowid = ff.fk_facture_source AND ff.type=1) WHERE f.entity = 1 AND f.fk_statut in (1,2) AND ff.type IS NULL AND f.type != 2 ORDER BY f.ref

C’est cette opération qui semble prendre 8 secondes.

Mais mes connaissances s’arrêtent là. Quelqu’un de pointu pour me tuyauter svp ?

Mille mercis !