Jump to content

lenteur site web


Recommended Posts

Bonjour,

j'ai une boutique prestashop 1.7.7.0 avec php 7.2.

Depuis une changement de theme nous constatons un ralentissement du site.

L'hébergeur est au max de ces compétences et jamais de souci avec d'autre prestashop sur le même type d'hebergement.

L'hébergeur nous indique trop de connexion de requête envoyé par le thème donc désinstaller des modules mais comment définir les modules qu'on utilise pas qui pourraient être désinstallé et voir ceux qui prennent le plus de connexion de requête inutile ? 

MERCI pour vos sugestion.

Share this post


Link to post
Share on other sites

Le mode debug est active voici juste une erreur en accueil pour le moment :

Notice à la ligne 101 du fichier /xxxxxxx/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php
[8] SessionHandler::gc(): ps_files_cleanup_dir: opendir(/tmp/.priv) failed: Permission denied (13)

Share this post


Link to post
Share on other sites

les infos de la barre debug :

 

Peak memory usage60.5 MB

PHP memory limitUnlimited

Errors0

Warnings33

Deprecations3

Cache Calls29

Total time1.54 ms

Cache hits22 / 27 (81.48%)

Cache writes2

Database Queries3

Query time1.25 ms

Invalid entities0

Second Level Cachedisabled

Total time470 ms

Initialization time111 ms

Share this post


Link to post
Share on other sites

Just now, kate66 said:

A OK je fais ce qui indiquer dans le lien JE REVIENS de suite MERCI encore

par contre y a des petit changement a faire vu que l'article est pour le mode debug et non pas pour le mode debug profiling, par contre c'est le même principe, merci @Mediacom87

Share this post


Link to post
Share on other sites

à l’instant, Alexandre Carette a dit :

par contre y a des petit changement a faire vu que l'article est pour le mode debug et non pas pour le mode debug profiling, par contre c'est le même principe, merci @Mediacom87

Comme je disais, c'ets pour aider dans l'idée mais à adapter pour l'appliquer au profiling.

Share this post


Link to post
Share on other sites

SELECT SQL_NO_CACHE * FROM `ps_product` a LEFT JOIN `ps_product_lang` `b` ON a.`id_product` = b.`id_product` AND b.`id_lang` = 1 LEFT JOIN `ps_product_shop` `c` ON a.`id_product` = c.`id_product` AND c.`id_shop` = 1 WHERE (a.`id_product` = 2474) AND (b.`id_shop` = 1) LIMIT 1

1980.31/src/Adapter/EntityMapper.php:75

SELECT SQL_NO_CACHE image_shop.`id_image` FROM `ps_image` i INNER JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1) WHERE i.`id_product` = 2112 AND image_shop.`cover` = 1 LIMIT 1

19745/classes/Product.php:3118

SELECT SQL_NO_CACHE bgm.*, s.`name` , bgml.`content` FROM ps_bongooglemap bgm LEFT JOIN ps_store_lang s ON(bgm.`id_store` = s.`id_store`) LEFT JOIN ps_bongooglemap_lang bgml ON(bgm.`id_tab` = bgml.`id_tab`) WHERE bgm.`id_shop` = 1 AND bgm.`id_shop` = 1 AND bgml.`id_lang` = 1 AND s.`id_lang` = 1 AND bgm.`status` = 1 ORDER BY bgm.`id_tab`

19131Yes/modules/bongooglemap/classes/ClassGooglemap.php:106

SELECT SQL_NO_CACHE p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) AS quantity, IFNULL(product_attribute_shop.id_product_attribute, 0) AS id_product_attribute, product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, image_shop.`id_image` id_image, il.`legend` as legend, m.`name` AS manufacturer_name, cl.`name` AS category_default, DATEDIFF(product_shop.`date_add`, DATE_SUB("2021-04-21 00:00:00", INTERVAL 65 DAY)) > 0 AS new, product_shop.price AS orderprice FROM `ps_category_product` cp LEFT JOIN `ps_product` p ON p.`id_product` = cp.`id_product` INNER JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1) LEFT JOIN `ps_product_attribute_shop` product_attribute_shop ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop=1) LEFT JOIN ps_stock_available stock ON (stock.id_product = `p`.id_product AND stock.id_product_attribute = 0 AND stock.id_shop = 1 AND stock.id_shop_group = 0 ) LEFT JOIN `ps_category_lang` cl ON (product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = 1 AND cl.id_shop = 1 ) LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 1 AND pl.id_shop = 1 ) LEFT JOIN `ps_image_shop` image_shop ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop=1) LEFT JOIN `ps_image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = 1) LEFT JOIN `ps_manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE product_shop.`id_shop` = 1 AND cp.`id_category` = 2 AND product_shop.`active` = 1 AND product_shop.`visibility` IN ("both", "catalog") ORDER BY RAND() LIMIT 12

1904.43376Yes/classes/Category.php:1056

SELECT SQL_NO_CACHE cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, cp.`id_customization`, pl.`name`, p.`is_virtual`, pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, m.`name` AS manufacturer_name, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`, product_shop.`available_for_order`, product_shop.`show_price`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`, stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`, p.`available_date`, p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category, CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0), IFNULL(cp.`id_customization`, 0)) AS unique_id, cp.id_address_delivery, product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference, cu.`id_customization`, cu.`quantity` AS customization_quantity, product_attribute_shop.`price` AS price_attribute, product_attribute_shop.`ecotax` AS ecotax_attr, IF (IFNULL(pa.`reference`, '') = '', p.`reference`, pa.`reference`) AS reference, (p.`weight`+ pa.`weight`) weight_attribute, IF (IFNULL(pa.`ean13`, '') = '', p.`ean13`, pa.`ean13`) AS ean13, IF (IFNULL(pa.`isbn`, '') = '', p.`isbn`, pa.`isbn`) AS isbn, IF (IFNULL(pa.`upc`, '') = '', p.`upc`, pa.`upc`) AS upc, IF (IFNULL(pa.`mpn`, '') = '', p.`mpn`, pa.`mpn`) AS mpn, IFNULL(product_attribute_shop.`minimal_quantity`, product_shop.`minimal_quantity`) as minimal_quantity, IF(product_attribute_shop.wholesale_price > 0, product_attribute_shop.wholesale_price, product_shop.`wholesale_price`) wholesale_price , image_shop.`id_image` id_image, il.`legend` FROM `ps_cart_product` cp LEFT JOIN `ps_product` `p` ON p.`id_product` = cp.`id_product` INNER JOIN `ps_product_shop` `product_shop` ON (product_shop.`id_shop` = cp.`id_shop` AND product_shop.`id_product` = p.`id_product`) LEFT JOIN `ps_product_lang` `pl` ON p.`id_product` = pl.`id_product` AND pl.`id_lang` = 1 AND pl.id_shop = cp.id_shop LEFT JOIN `ps_category_lang` `cl` ON product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = 1 AND cl.id_shop = cp.id_shop LEFT JOIN `ps_product_supplier` `ps` ON ps.`id_product` = cp.`id_product` AND ps.`id_product_attribute` = cp.`id_product_attribute` AND ps.`id_supplier` = p.`id_supplier` LEFT JOIN `ps_manufacturer` `m` ON m.`id_manufacturer` = p.`id_manufacturer` LEFT JOIN ps_stock_available stock ON (stock.id_product = `cp`.id_product AND stock.id_product_attribute = IFNULL(`cp`.id_product_attribute, 0) AND stock.id_shop = 1 AND stock.id_shop_group = 0 ) LEFT JOIN `ps_customization` `cu` ON p.`id_product` = cu.`id_product` AND cp.`id_product_attribute` = cu.`id_product_attribute` AND cp.`id_customization` = cu.`id_customization` AND cu.`id_cart` = 25099 LEFT JOIN `ps_product_attribute` `pa` ON pa.`id_product_attribute` = cp.`id_product_attribute` LEFT JOIN `ps_product_attribute_shop` `product_attribute_shop` ON (product_attribute_shop.`id_shop` = cp.`id_shop` AND product_attribute_shop.`id_product_attribute` = pa.`id_product_attribute`) LEFT JOIN `ps_image_shop` `image_shop` ON image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop=1 LEFT JOIN `ps_image_lang` `il` ON il.`id_image` = image_shop.`id_image` AND il.`id_lang` = 1 WHERE (cp.`id_cart` = 25099) AND (p.`id_product` IS NOT NULL) GROUP BY cp.`id_product_attribute`, cp.`id_product`, cp.`id_shop`, cp.`id_customization` ORDER BY cp.`date_add`, cp.`id_product`, cp.`id_product_attribute` ASC

1719.924YesYes/classes/Cart.php:760

SELECT SQL_NO_CACHE cr.* FROM ps_cart_rule cr LEFT JOIN ps_cart_rule_shop crs ON cr.id_cart_rule = crs.id_cart_rule LEFT JOIN ps_cart_rule_carrier crca ON cr.id_cart_rule = crca.id_cart_rule LEFT JOIN ps_carrier c ON (c.id_reference = crca.id_carrier AND c.deleted = 0) LEFT JOIN ps_cart_rule_country crco ON cr.id_cart_rule = crco.id_cart_rule WHERE cr.active = 1 AND cr.code = "" AND cr.quantity > 0 AND NOW() BETWEEN cr.date_from AND cr.date_to AND ( cr.id_customer = 0 OR cr.id_customer = 2 ) AND ( cr.`carrier_restriction` = 0 OR c.id_carrier = 15 ) AND ( cr.`shop_restriction` = 0 ) AND ( cr.`group_restriction` = 0 OR EXISTS ( SELECT 1 FROM `ps_customer_group` cg INNER JOIN `ps_cart_rule_group` crg ON cg.id_group = crg.id_group WHERE cr.`id_cart_rule` = crg.`id_cart_rule` AND cg.`id_customer` = 2 LIMIT 1 ) ) AND ( cr.`reduction_product` <= 0 OR EXISTS ( SELECT 1 FROM `ps_cart_product` WHERE `ps_cart_product`.`id_product` = cr.`reduction_product` AND `id_cart` = 25099 ) ) AND NOT EXISTS (SELECT 1 FROM ps_cart_cart_rule WHERE cr.id_cart_rule = ps_cart_cart_rule.id_cart_rule AND id_cart = 25099) ORDER BY priority

1703.4148Yes/classes/CartRule.php:1629

SELECT SQL_NO_CACHE COUNT(DISTINCT `id_product`) FROM `ps_specific_price` WHERE `id_product` != 0 LIMIT 1

1693.8598/classes/SpecificPrice.php:286

SELECT SQL_NO_CACHE pa.`available_date` FROM `ps_product` p LEFT JOIN `ps_product_attribute` pa ON (pa.`id_product` = p.`id_product`) INNER JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1) INNER JOIN ps_product_attribute_shop product_attribute_shop ON (product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = 1) WHERE p.`id_product` = 1644 AND pa.`id_product` = 1644 AND pa.`id_product_attribute` = 5672 LIMIT 1

1629.81/classes/Product.php:949

SELECT SQL_NO_CACHE product_shop.`price`, product_shop.`ecotax`, IFNULL(product_attribute_shop.id_product_attribute,0) id_product_attribute, product_attribute_shop.`price` AS attribute_price, product_attribute_shop.default_on FROM `ps_product` p INNER JOIN `ps_product_shop` `product_shop` ON (product_shop.id_product=p.id_product AND product_shop.id_shop = 1) LEFT JOIN `ps_product_attribute_shop` `product_attribute_shop` ON (product_attribute_shop.id_product = p.id_product AND product_attribute_shop.id_shop = 1) WHERE (p.`id_product` = 2410)

16129/classes/Product.php:3401

SELECT SQL_NO_CACHE m.`id_module`, m.`name`, ms.`id_module`as `mshop` FROM `ps_module` m LEFT JOIN `ps_module_shop` ms ON m.`id_module` = ms.`id_module` AND ms.`id_shop` = 1

1611.2118/classes/module/Module.php:322

SELECT SQL_NO_CACHE image_shop.`cover`, i.`id_image`, il.`legend`, i.`position` FROM `ps_image` i INNER JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1) LEFT JOIN `ps_image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = 1) WHERE i.`id_product` = 2457 ORDER BY `position`

Share this post


Link to post
Share on other sites

il y a 22 minutes, kate66 a dit :

hier soir nickel pour le temps de chargement et ce matin site de nouveau très lent.Quelqu'un aurait une solution ? MERCI

Peut être changer d'hébergeur pour un meilleur ou plus adapté à votre site.

Share this post


Link to post
Share on other sites

Personnellement je ne trouve pas du tout votre site lent.

Mais en le testant on découvre le chargement de 12 fonts différentes,

plus de 50 images produits

Du code js et css placé au milieu du code alors qu'il devrait être dans des fichiers déportés et ainsi de suite, donc à un moment le template il est beau mais bon si le truc provoque le non fonctionnement d'un site on préférera un template plus moche mais qui fonctionne et donc qui vend.

Share this post


Link to post
Share on other sites

Bonjour, désolé j 'ai du mal a comprendre le test, je vois qu'on est en F sur deux point sécurité et 1 octet.Pourriez-vous me tranmsettre une procédure qui me permettrai de trouver ce bug car ce bug est aléatoire mais tellement génant que nous perdons enormement de clients.Ce matin 9h le site mettait presque 1min par de chargement des pages impossible a utiliser ? MERCI

Share this post


Link to post
Share on other sites

Sur dareboost merci pour le lien d'ailleurs on nous indique que c'est les images mais leur tailles sont pourtant retravailler avant leur upload leur taille est pour moi peut conséquente.C'est une boutique donc avoir des images est je pense normal ? merci pour votre aide.

Share this post


Link to post
Share on other sites

qq conseils,

faites vos audits avec google page speed

les 3 mesures critiques sont FCP, LCP et CLS

278985869_Capturedecran2021-04-22a10_14_22.thumb.png.9cd2d8cd1fb0b68872c4d67e53c4e717.png

 

utilisez cloudflare

utilisez tinypng https://tinypng.com/ pour compresser vos image,

1780524949_Capturedecran2021-04-22a10_14_45.thumb.png.651a0aa6e21904e2487195fde22a96dc.png

utilisez le webp plutot que le jpg (un simple override d'image manager permet d'utiliser la librairie GD en compression webp)

utilisez la librairie lazy size afin de faire du lazy loading sur les image et faire du responsive image: https://github.com/aFarkas/lazysizes

cdt

Share this post


Link to post
Share on other sites

très bien je vais m'occuper des images les compresser et les reuploader, je n'ai jamais utiliser de librairie je vais voir qu'on procéder.J'avais testr google page speed mais je ne comprends pas trop les résultats FCP, LCP et CLS ? 

Share this post


Link to post
Share on other sites

Pourtant nos images sont redimensionner avant chaque upload et je ne comprends pas c'est que bug de lenteur est sur tous le site a chaque appel d'une page cela n'indique pas que justement cela ne peut etre dut au image mais a quelques chose d'autre surtout si c'est aleatoire ? MERCI

Share this post


Link to post
Share on other sites

Bonjour,

J'ai le même type de souci. En page d'accueil quand on demande la page 2, elle apparait mais le petit cercle d'attente, ne disparait pas. Vous avez peut-être une idée. Merci d'avance.

http://2020.chumeditions.com/index.php?id_category=11&controller=category

Cordialement

GB

Edited by Esaqui
Forget URL (see edit history)

Share this post


Link to post
Share on other sites

Il faudrait analyser en profondeur:

- les requete en BDD avec le mode debug profiling activé

- verifier les modules installé, peut etre qu il font des appels API (desactiver / desinstallé un par un)

- Peut etre deconnecter votre prestashop a Prestashop Addon, des fois leur API bug

si ca ne suffit pas, analyser le fichier access.log du serveur et voir si votre site ne subit pas des attaques DOS le cas échanchéant bannir les IP

cdt

Share this post


Link to post
Share on other sites

oui en desactivant les modules cela ne risque pas d'effacer leur paramètrage ? Il y' a 7 categorie et 8 sous categorie.

On les a simplement mit dans le menu par appeler que veut tu dire ? 

Merci

Cdt

Share this post


Link to post
Share on other sites

ben deja ne pas faire des appels a google font, privilégier la mise en place des fonts sur le serveur, ensuite la performance c'est a la conception du theme... Dans le cas de cette reco lighthouse  faire du Critical CSS... Néanmoins un site prestashop performant se fait" from scratch" et non avec un theme, c'est un travail qui requiert beaucoup de connaissances... une astuce est de ne pas charger les biblithèques des fonts pour les icones (font awesome , material design) mais de privilégier les svg, ca permet d'eviter de charger une font de 200 icones alors qu en réalité vous en utilisez que 4 ou 5

Edited by Alexandre Carette (see edit history)

Share this post


Link to post
Share on other sites

bonjour notre hebergeur vient de nous signaler que ce sont des requetes php mysql avec jointure trop importante qui fait ce bug ? Il ne pense pas que ce soit un module on les a presque tous desactiver.On ne sait plus quoi faire on est perdu beaucoup de client se plaignent.

Share this post


Link to post
Share on other sites