Home WordpressWordPress cơ bản Làm gì khi WordPress chạy chậm?

Làm gì khi WordPress chạy chậm?

by admincp

WP-CLI có lệnh `wp profile` có thể giúp bạn nhanh chóng tìm ra đoạn code nào làm WordPress chạy chậm. Công cụ này hỗ trợ làm việc với xdebug và New Relic bởi lý do nó khá dễ dàng cài đặt trên hosting server có cài đặt WP-CLI.

Với wp profile cho bạn chi tiết các thành phần load trong wordpress mà ảnh hưởng đến tốc độ wordpress như thời gian thực thi, số lượng truy vấn database, cache hit/miss ratio.. để giúp bạn debug dễ dàng.

Chạy lệnh wp profile stage để xem thông số tải trang ở từng giai đoạn sử lý code trong WordPress, bạn có thể thêm tham số --url= nếu muốn tùy biến quét URL.

$ wp profile stage --url=yourdomain.com
+------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+
| stage      | time    | query_time | query_count | cache_ratio | cache_hits | cache_misses | hook_time | hook_count | request_time | request_count |
+------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+
| bootstrap  | 0.7597s | 0.0052s    | 14          | 93.21%      | 357        | 26           | 0.3328s   | 2717       | 0s           | 0             |
| main_query | 0.0131s | 0.0004s    | 3           | 94.29%      | 33         | 2            | 0.0065s   | 78         | 0s           | 0             |
| template   | 0.7041s | 0.0192s    | 147         | 92.16%      | 2350       | 200          | 0.6982s   | 6130       | 0s           | 0             |
+------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+
| total (3)  | 1.477s  | 0.0248s    | 164         | 93.22%      | 2740       | 228          | 1.0375s   | 8925       | 0s           | 0             |
+------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+

Khi wordpress site sử lý các request từ trình duyệt, bản chất nó đang thực thi các mã PHP script. Lệnh này chia làm 3 giai đoạn:

  • bootstrap sử lý nạp plugins, theme và các hook ban đầu (init)
  • main_query sử lý WP_Query chính
  • template Phát hiện những template trong theme được gọi dựa trên query chính và render nó.

Trong ví dụ trên, chúng ta thấy stage `bootstrap` dường như chạy hơi chậm, chúng ta sẽ đi phân tích sâu ở stage này. Lệnh wp profile stage bootstrap sẽ phân tích chi tiết những gì đang sảy ra ở giai đoạn bootstrap.

$ wp profile stage bootstrap --url=runcommand.io --spotlight
+--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+
| hook                     | callback_count | time    | query_time | query_count | cache_ratio | cache_hits | cache_misses | request_time | request_count |
+--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+
| muplugins_loaded:before  |                | 0.1644s | 0.0017s    | 1           | 40%         | 2          | 3            | 0s           | 0             |
| muplugins_loaded         | 2              | 0.0005s | 0s         | 0           | 50%         | 1          | 1            | 0s           | 0             |
| plugins_loaded:before    |                | 0.1771s | 0.0008s    | 6           | 77.63%      | 59         | 17           | 0s           | 0             |
| plugins_loaded           | 14             | 0.0887s | 0s         | 0           | 100%        | 104        | 0            | 0s           | 0             |
| after_setup_theme:before |                | 0.043s  | 0s         | 0           | 100%        | 26         | 0            | 0s           | 0             |
| init                     | 82             | 0.1569s | 0.0018s    | 7           | 96.88%      | 155        | 5            | 0s           | 0             |
| wp_loaded:after          |                | 0.027s  | 0s         | 0           |             | 0          | 0            | 0s           | 0             |
+--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+
| total (7)                | 98             | 0.6575s | 0.0043s    | 14          | 77.42%      | 347        | 26           | 0s           | 0             |
+--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+

Ở mỗi stage sẽ có những actions khác nhau, ví dụ với bootstrap, bạn có thể thấy một vài actions như ‘plugins_loaded:before’ & ‘wp_loaded:after’. Các actions tương ứng với hành động before, after trong wordpress hooks.

Khi bạn tìm ra hook nào là yếu tố tác động đến tối ưu tốc độ wordpress, tức làm wordpress chạy chậm, có thể sử dụng tiếp lệnh sau với hook. Nhớ thêm tham số --fields= để lọc hiển thị các trường.

$ wp profile hook plugins_loaded --url=runcommand.io --fields=callback,time,location
+------------------------------------------------------------+---------+-----------------------------------------------------------------+
| callback                                                   | time    | location                                                        |
+------------------------------------------------------------+---------+-----------------------------------------------------------------+
| wp_maybe_load_widgets()                                    | 0.0046s | wp-includes/functions.php:3501                                  |
| wp_maybe_load_embeds()                                     | 0.0003s | wp-includes/embed.php:162                                       |
| VaultPress_Hotfixes->protect_jetpack_402_from_oembed_xss() | 0s      | vaultpress/class.vaultpress-hotfixes.php:124                    |
| _wp_customize_include()                                    | 0s      | wp-includes/theme.php:2052                                      |
| EasyRecipePlus->pluginsLoaded()                            | 0.0013s | easyrecipeplus/lib/EasyRecipePlus.php:125                       |
| GamajoGenesisHeaderNavgenesis_header_nav_i18n()          | 0.0007s | genesis-header-nav/genesis-header-nav.php:61                    |
| DS_Public_Post_Preview::init()                             | 0.0001s | public-post-preview/public-post-preview.php:52                  |
| wpseo_load_textdomain()                                    | 0.0004s | wordpress-seo-premium/wp-seo-main.php:222                       |
| load_yoast_notifications()                                 | 0.0016s | wordpress-seo-premium/wp-seo-main.php:381                       |
| wpseo_init()                                               | 0.0329s | wordpress-seo-premium/wp-seo-main.php:240                       |
| wpseo_premium_init()                                       | 0.0019s | wordpress-seo-premium/wp-seo-premium.php:79                     |
| wpseo_frontend_init()                                      | 0.0007s | wordpress-seo-premium/wp-seo-main.php:274                       |
| Black_Studio_TinyMCE_Plugin->load_compatibility()          | 0.0016s | black-studio-tinymce-widget/black-studio-tinymce-widget.php:206 |
| Jetpack::load_modules()                                    | 0.0564s | jetpack/class.jetpack.php:1672                                  |
+------------------------------------------------------------+---------+-----------------------------------------------------------------+
| total (14)                                                 | 0.1026s |                                                                 |
+------------------------------------------------------------+---------+-----------------------------------------------------------------+

Oh, tôi đã tìm ra nguyên nhân! Do hàm wpseo_init()Jetpack::load_modules() sử lý mất ~100ms ở mỗi trang được nạp.

Với tiện ích wp profile, bạn dễ dàng khám phá bên trong WordPress để trả lời câu hỏi tại sao WordPress của bạn chạy chậm ?

Chúc các bạn thành công!

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên TwitterFacebook

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment