افزونه Query Monitor چیست و دقیقاً چه کاری انجام میدهد؟
Query Monitor یک افزونه تخصصی برای بررسی عملکرد داخلی وردپرس است. این ابزار اطلاعات زیر را نمایش میدهد:
- تعداد و زمان اجرای کوئریهای دیتابیس
- خطاها و هشدارهای PHP
- هوکها و اکشنها
- درخواستهای HTTP به سرویسهای بیرونی
- فایلهای CSS و JavaScript لود شده
- میزان مصرف حافظه و زمان ساخت صفحه در سرور
به زبان ساده، این افزونه مانند یک دستگاه عیبیاب داخلی برای وردپرس عمل میکند.
چه زمانی باید از Query Monitor استفاده کنیم؟
در شرایط زیر استفاده از این ابزار ضروری است:
- سایت ناگهان کند شده است
- بعد از نصب یک افزونه سرعت کاهش یافته است
- صفحه خاصی دیر باز میشود
- پنل مدیریت وردپرس با تاخیر باز میشود
- خطاهای نامشخص در سایت دیده میشود
نکته مهم: این افزونه را برای همیشه فعال نگه ندارید. پس از پایان بررسی، آن را غیرفعال کنید. فعال نگه داشتن این ابزار ممکن است باعث کندی سایت شود!
هاست وردپرس
هاست وردپرس ایرانسرور؛ میزبانی اختصاصی وردپرس با NVMe فوقسریع و پردازندههای Intel
بهینه سازی سرعت سایت با استفاده از Query Monitor
گام اول: نصب Query Monitor
برای نصب افزونه، ابتدا وارد پیشخوان وردپرس شوید و از منوی سمت راست روی بخش «افزونهها» کلیک کنید. در صفحه باز شده، در کادر جستجو عبارت Query Monitor را وارد کنید تا افزونه نمایش داده شود. سپس روی گزینه «نصب» کلیک کنید و بعد از چند ثانیه دکمه «فعالسازی» را بزنید. درصورتی که پلاگین کوئری مانیتور برای شما نمایش داده نشد، میتوانید آنرا از صفحه رسمی کوئری مانیتور در مخزن وردپرس دانلود کنید.

پس از فعال شدن افزونه، یک منوی جدید در نوار مدیریت بالای سایت نمایش داده میشود که از طریق آن میتوانید پنل Query Monitor را باز کنید.

گام دوم: فعالسازی حالت دیباگ در وردپرس
برای اینکه بتوانید خطاهای کامل وردپرس را ببینید، بهتر است حالت دیباگ فعال باشد. برای این کار باید فایل wp-config.php را ویرایش کنید. سادهترین روش این است که وارد پنل هاست خود شوید. اگر با این فرایند آشنایی ندارید، پیشنهاد میکنیم ابتدا مقاله نحوه ورود به سی پنل را مطالعه کنید. سپس در cPanel یا DirectAdmin روی File Manager کلیک کرده و وارد پوشه public_html شوید. در این پوشه فایل wp-config.php قرار دارد. روی آن راست کلیک کنید و گزینه Edit را بزنید.
بعد از باز شدن فایل، مقادیر مربوط به WP_DEBUG را به شکل زیر تنظیم کنید:
;define('WP_DEBUG', true) ;define('WP_DEBUG_LOG', true) ;define('WP_DEBUG_DISPLAY', false)

گزینه WP_DEBUG باعث فعال شدن ثبت خطاها میشود، گزینه WP_DEBUG_LOG خطاها را داخل فایل ذخیره میکند و WP_DEBUG_DISPLAY مانع نمایش خطاها در صفحه سایت میشود. توجه داشته باشید این تنظیمات را در ساعات پیک ترافیک اعمال نکنید؛ چون ممکن است روی سرعت و عملکرد سایت تأثیر بگذارد.
در نظر داشته باشید فعال کردن WP_DEBUG برای کار کردن Query Monitor الزامی نیست، اما اگر آن را فعال کنید، خطاهای PHP مانند Notice، Warning و پیامهای Deprecated به صورت کاملتر ثبت و نمایش داده میشوند. بنابراین این مرحله برای بررسی عمیقتر خطاهای کدنویسی پیشنهاد میشود.
گام سوم: آشنایی با بخشهای مختلف Query Monitor
بعد از کلیک روی منوی Query Monitor در نوار بالا، پنل باز میشود. که در ادامه با بخش های مختلف آن آشنا می شویم.
۱) بخش Overview
بخش Overview یک نمای کلی از وضعیت همان صفحهای است که اکنون باز کردهاید. این قسمت مانند یک داشبورد سریع عمل میکند و به شما نشان میدهد وردپرس برای ساخت این صفحه چه مقدار منابع مصرف کرده و چه عملیاتی انجام داده است. شما میتوانید در این قسمت وضعیت صفحات مختلف را با هم مقایسه کنید تا اگر تغییری غیرعادی یا مشکوک وجود داشت، آن را سریع تشخیص دهید.

در این بخش معمولاً اطلاعات زیر نمایش داده میشود:
۱) زمان ساخت صفحه (Page Generation Time)
این عدد نشان میدهد سرور چه مدت زمان صرف کرده تا خروجی این صفحه را تولید کند. اگر این عدد در یک صفحه خاص ناگهان افزایش پیدا کند، معمولاً یکی از این موارد باعث آن شده است:
- افزایش تعداد کوئریهای دیتابیس
- اجرای هوک یا افزونه سنگین
- کند بودن درخواستهای بیرونی
- فشار لحظهای روی منابع سرور
برای تحلیل دقیق، این عدد را قبل و بعد از اعمال تغییرات مقایسه کنید.
افزونه Query Monitor به شما کمک میکند کوئریهای سنگین دیتابیس، هوکهای کند و افزونههای پرمصرف را شناسایی کنید. اما شناسایی مشکل فقط نیمی از مسیر است؛ برای بهینهسازی کامل باید از تکنیکهای عملی و ساختاری استفاده کنید. اگر به دنبال راهکارهای اجرایی هستید، پیشنهاد میکنیم راهنمای جامع افزایش سرعت سایت وردپرسی را مطالعه کنید.
۲) مصرف حافظه (Peak Memory Usage)
این بخش نشان میدهد در زمان اجرای این درخواست، چه مقدار حافظه RAM استفاده شده است. اگر مصرف حافظه به سقف مجاز سرور نزدیک باشد، ممکن است با کندی یا خطاهای Memory Limit روبهرو شوید. اگر حافظه پایین است ولی صفحه کند است، مشکل کمبود RAM نیست بلکه معمولاً مشکل از دیتابیس یا درخواستهای بیرونی است.
۳) کوئریهای دیتابیس (Database Queries)
در این قسمت تعداد کل کوئریهای اجرا شده و نوع آنها مانند SELECT یا UPDATE نمایش داده میشود. افزایش ناگهانی تعداد کوئریها یا همزمانی تعداد زیاد کوئری با زمان ساخت بالا، نشانهای است که باید وارد بخش Database Queries شوید و کوئریها را بر اساس زمان مرتب کنید تا موارد سنگین را پیدا کنید.
اگر در بخش Database کوئری مانیتور پیامهای خطا یا زمان پاسخ غیرعادی مشاهده میکنید، احتمال بروز مشکل در اطلاعات wp-config.php وجود دارد. برای بررسی دقیقتر این موضوع، پیشنهاد میشود آموزش حل مشکل اتصال دیتابیس وردپرس را مطالعه کنید.
۴) درخواستهای بیرونی (HTTP API Calls)
اگر سایت شما به سرویسهای خارجی متصل باشد، تعداد این درخواستها در این بخش دیده میشود. حتی یک درخواست کند میتواند کل صفحه را دیرتر نمایش دهد. در صورت وجود عدد در این قسمت، بهتر است وارد بخش HTTP API Calls شوید و زمان پاسخ هر درخواست را بررسی کنید.
اگر در گزارشهای Query Monitor با زمان پاسخ بالا (TTFB) یا مصرف زیاد منابع مواجه میشوید، ممکن است مشکل از زیرساخت هاست باشد نه صرفاً افزونهها. در چنین شرایطی بررسی و ارتقای سرویس میتواند راهکار نهایی باشد. برای انتخاب سرویس مناسب، صفحه خرید هاست را بررسی کنید و پلن متناسب با ترافیک سایت خود را انتخاب کنید.
۵) وضعیت کش (Object Cache و Opcode Cache)
در این بخش وضعیت کش داخلی وردپرس و کش PHP نمایش داده میشود. اگر پیام مربوط به فعال نبودن کش پایدار مانند Redis یا Memcached نمایش داده شود، به معنی خطا نیست، بلکه یک پیشنهاد برای بهینهسازی در سایتهای پرترافیک است. فعال بودن Opcode Cache معمولاً به بهبود سرعت اجرای PHP کمک میکند. همچنین اگر قصد دارید کش سایت خود را بهدرستی مدیریت کنید، پیشنهاد میشود راهنمای پاک کردن کش وردپرس را مطالعه کنید تا با روشهای اصولی حذف و نوسازی کش آشنا شوید.
در مجموع، Overview فقط یک نمای اولیه برای تشخیص جهت بررسی است. اگر زمان ساخت صفحه بالا باشد، باید وارد جزئیات کوئریها یا درخواستهای بیرونی شوید. اگر مصرف حافظه بالا باشد، باید منابع سرور را بررسی کنید. این بخش کمک میکند مسیر تحلیل را آگاهانه و دقیق انتخاب کنید، نه بر اساس حدس و گمان.
۲) بخش Doing it Wrong (هشدارهای اجرای نادرست کد)
بخش Doing it Wrong زمانی نمایش داده میشود که وردپرس تشخیص دهد یک تابع یا بخشی از کد در زمان نامناسب اجرا شده است. این مورد خطای بحرانی نیست، اما یک هشدار محسوب میشود و نشان میدهد یک افزونه یا قالب، استانداردهای توصیهشده وردپرس را دقیق رعایت نکرده است.
برای مثال در تصویر بالا، پیام مربوط به این است که بارگذاری فایلهای ترجمه یک افزونه زودتر از زمان درست بارگذاری شدهاند. طبق پیام، تابع مربوط به لود ترجمه باید در هوک init یا بعد از آن اجرا شود، اما زودتر از زمان مناسب اجرا شده است. ستون Component نشان میدهد این هشدار مربوط به افزونه wp-rocket است. این به معنی خراب بودن افزونه نیست، بلکه نشان میدهد بخشی از کد آن زودتر از زمان پیشنهادی وردپرس اجرا شده است.
اگر چنین هشداری دیدید، این مراحل را انجام دهید:
- بررسی کنید افزونه یا قالب به آخرین نسخه بهروزرسانی شده باشد.
- اگر در محیط تست هستید، یک بار افزونه را موقتاً غیرفعال کنید و تغییر زمان ساخت صفحه را مقایسه کنید.
- اگر پیام زیاد تکرار میشود، احتمالاً افزونه نیاز به بهینهسازی یا تنظیمات دقیقتر دارد.
این بخش بیشتر برای تحلیل عمیقتر کد مفید است و معمولاً برای کاربران عادی سایت مشکل بحرانی ایجاد نمیکند، اما برای توسعهدهندگان و مدیران فنی یک نشانه مهم محسوب میشود.
خرید سرور مجازی (vps)
با خرید سرور مجازی از ایرانسرور، از منابع اختصاصی، سرعت NVMe و زیرساخت پایدار در ایران و اروپا بهرهمند شوید و با خیال راحت کسبوکار خود را توسعه دهید.
در برخی سایتها این نوع هشدار ممکن است هیچ اثر محسوسی روی عملکرد نگذارد، اما در شرایط خاص میتواند باعث افزایش تعداد هوکهای اجرا شده، بالا رفتن زمان ساخت صفحه یا ایجاد تداخل با افزونههای دیگر شود. همچنین در محیطهای توسعهای که دیباگ فعال است، تعداد زیاد این هشدارها میتواند روی عملکرد تأثیر بگذارد.
نکته مهم: پیام Doing it Wrong در هر سایت میتواند متفاوت باشد. ممکن است در سایت شما مربوط به یک افزونه کش باشد، در سایت دیگر مربوط به افزونه سئو، فرمساز یا حتی قالب. بنابراین همیشه به ستون Component توجه کنید تا متوجه شوید منشأ پیام دقیقاً کدام بخش است.
۳) بخش Database Queries
بخش Database Queries مهمترین قسمت برای تحلیل کندی سایت است، زیرا تمام کوئریهایی که هنگام بارگذاری همین صفحه اجرا شدهاند را نمایش میدهد. در این جدول میتوانید متن کامل هر کوئری، مدت زمان اجرا (Time)، تابع اجراکننده (Caller) و منبع آن یعنی افزونه، هسته یا قالب وردپرس (Component) را ببینید. هدف شما در این بخش پیدا کردن الگوی غیرعادی است، نه صرفاً دیدن یک عدد خاص.

برای پیدا کردن کوئریهای سنگین، ابتدا روی ستون Time کلیک کنید تا کوئریها بر اساس زمان اجرا مرتب شوند. کوئریهایی که زمان بیشتری نسبت به بقیه دارند یا چند بار تکرار شدهاند، معمولاً نیاز به بررسی دارند. سپس به ستون Component نگاه کنید تا مشخص شود این کوئریها مربوط به کدام افزونه یا قالب هستند. اگر چند کوئری کند از یک منبع مشترک باشند، احتمالاً همان بخش باعث افزایش زمان ساخت صفحه شده است.
نکته مهم: وجود یک کوئری کند یا نام یک افزونه در این جدول به معنی خراب بودن آن نیست. باید تعداد کوئریها، زمان اجرا و تکرار آنها را در کنار هم تحلیل کنید. با این روش میتوانید به شکل عددی و دقیق بفهمید فشار اصلی روی دیتابیس از کجا ایجاد شده است و تصمیم اصلاحی بگیرید، نه اینکه بر اساس حدس افزونهها را غیرفعال کنید.
منظور از کوئری سنگین چیست؟
کوئری سنگین به کوئریای گفته میشود که نسبت به بقیه کوئریهای همان صفحه، زمان بیشتری برای اجرا نیاز دارد یا فشار بیشتری به دیتابیس وارد میکند. این سنگینی میتواند به خاطر طولانی بودن زمان اجرا، تعداد زیاد کوئریها در یک صفحه، تکرار چند باره یک کوئری مشابه یا درگیر شدن بیش از حد جداولی مثل wp_postmeta باشد که معمولاً در بسیاری از سایتها پرترافیک هستند.
اگر هنگام مرتبسازی بر اساس زمان اجرا، چند کوئری با زمان نسبتاً بالا مشاهده کردید یا یک نوع کوئری بارها تکرار شد، باید آن بخش را بررسی کنید. معمولاً اگر چند کوئری بالاتر از حدود ۱۰۰ میلیثانیه باشند یا در مجموع زمان قابل توجهی مصرف کنند، ارزش دارد دقیقتر تحلیل شوند تا مشخص شود کدام افزونه یا کدام بخش از کد باعث این فشار شده است.
با ۱۶تا از کاربردی ترین و بهترین افزونه های هوش مصنوعی وردپرس بیشتر آشنا شوید
۴) بخش HTTP API Calls
بخش HTTP API Calls درخواستهایی را نشان میدهد که وردپرس در هنگام بارگذاری همین صفحه به سرویسهای بیرونی ارسال کرده است. این درخواستها میتوانند مربوط به افزونههای کش، سئو سایت، آمار، لایسنس، بهینهسازی تصویر یا هر سرویس خارجی دیگری باشند. اگر صفحه شما کند است اما در بخش Database Queries مشکل واضحی دیده نمیشود، این قسمت باید بررسی شود.

در جدول این بخش میتوانید نوع درخواست (GET یا POST)، آدرس مقصد، وضعیت پاسخ (Status)، مدت زمان اجرا (Time)، حجم پاسخ (Response Size) و افزونه اجراکننده (Component) را مشاهده کنید. در تصویر بالا، یک درخواست با وضعیت ۴۰۳ Forbidden دیده میشود که مربوط به افزونه Elementor است و یک درخواست دیگر با وضعیت ۲۰۰ OK مربوط به افزونه Imagify. وجود کدهای خطا مانند ارور ۴۰۳ یا ۵۰۰ همیشه به معنی مشکل جدی نیست؛ اما اگر همراه با زمان پاسخ بالا باشند، میتوانند باعث افزایش زمان ساخت صفحه شوند.
نکته مهم: حتی یک درخواست بیرونی کند میتواند کل فرآیند بارگذاری صفحه را متوقف کند تا پاسخ دریافت شود. بنابراین اگر در ستون Time عدد بالایی مشاهده کردید یا چند درخواست مشابه تکرار شده بودند، باید بررسی کنید که آیا این ارتباط ضروری است، آیا میتوان آن را کش کرد یا آیا لازم است تنظیمات افزونه مربوطه اصلاح شود.
بررسی خطاهای PHP
بخش PHP Errors تمام خطاهایی را که در هنگام بارگذاری همان صفحه توسط PHP تولید شدهاند نمایش میدهد. این خطاها میتوانند از نوع Warning، Notice یا سطحهای دیگر باشند و معمولاً نشان میدهند بخشی از کد قالب یا افزونه به درستی نوشته نشده یا متغیری مقداردهی نشده است.

در تصویر بالا یک Warning با پیام «Undefined variable» دیده میشود که نشان میدهد یک متغیر بدون تعریف استفاده شده است. در ستون Location مسیر دقیق فایل و شماره خط مشخص شده و در ستون Component هم دیده میشود که خطا مربوط به قالب فرزند است. این اطلاعات به شما کمک میکند دقیقاً بدانید مشکل از کدام فایل و کدام بخش کد است، و دیگر نیازی به حدس زدن نداشته باشید.
وجود یک Warning معمولاً باعث از کار افتادن سایت نمیشود، اما اگر این خطاها زیاد شوند یا در بخشهای پرتکرار اجرا شوند، میتوانند روی عملکرد سایت تأثیر بگذارند و زمان پردازش را افزایش دهند. اگر در این بخش خطا مشاهده کردید، بهترین کار این است که مسیر فایل را بررسی کنید، کد را اصلاح کنید یا در صورت مربوط بودن به افزونه، نسخه آن را بهروزرسانی کنید.
سناریوی عملی کامل برای پیدا کردن علت کندی
حال که با بخشهای مختلف Query Monitor آشنا شدید، بهتر است یک بار مسیر عیبیابی را به شکل یک چکلیست خلاصه مرور کنید تا وقتی سایت کند میشود، سریع بدانید از کجا شروع کنید و به کجا برسید. در این بخش اول یک جدول برای تشخیص سریع میبینید، سپس مراحل را گام به گام و کوتاه توضیح میدهیم.
جدول تشخیص سریع علت کندی در Query Monitor
| نشانهای که میبینید | احتمال مشکل چیست | از کدام بخش شروع کنید | اقدام سریع پیشنهادی |
| زمان ساخت صفحه بالا است | پردازش سنگین در سرور | Overview | عددها را در چند بار رفرش مقایسه کنید |
| تعداد کوئریها زیاد شده است | افزونه یا قالب، کوئری زیاد میزند | Database Queries | بر اساس Time مرتب کنید و Component را بررسی کنید |
| چند کوئری کند دیده میشود | کوئری غیر بهینه یا داده زیاد | Database Queries | کندترینها را پیدا کنید و منبع را مشخص کنید |
| درخواست بیرونی کند یا خطادار است | سرویس خارجی یا تنظیمات افزونه | HTTP API Calls | Time و Status را بررسی کنید و افزونه را مشخص کنید |
| Warning یا Notice زیاد دارید | مشکل کدنویسی در قالب یا افزونه | PHP Errors | Location را ببینید و خطا را اصلاح کنید |
| پیام Doing it Wrong دارید | اجرا شدن کد در زمان نامناسب | Doing it Wrong | افزونه یا قالب را بهروزرسانی کنید و تداخل را بررسی کنید |
چکلیست گام به گام برای پیدا کردن علت کندی سایت
گام ۱: صفحه کند را دقیق انتخاب کنید
شما باید یک صفحه مشخص را انتخاب کنید. مثلاً صفحه اصلی، صفحه نوشته، صفحه محصول یا یک صفحه از پیشخوان. تحلیل بدون صفحه مشخص نتیجه دقیق نمیدهد.
گام ۲: Overview را باز کنید و عددهای پایه را یادداشت کنید
شما در Overview به سه عدد مهم نگاه کنید. زمان ساخت صفحه، مصرف حافظه و تعداد کوئریها. اینها پایه تحلیل شما هستند و بعداً باید با حالتهای دیگر مقایسه شوند.
گام ۳: اگر زمان ساخت صفحه بالا است، مسیر را با دو شاخه ادامه دهید
اگر زمان پاسخ بالا است، معمولاً مشکل از دیتابیس یا از درخواستهای بیرونی است. بنابراین هر دو بخش Database Queries و HTTP API Calls را بررسی کنید.
گام ۴: Database Queries را بر اساس Time مرتب کنید
روی ستون Time کلیک کنید تا کندترین کوئریها بالا بیایند. سپس توجه کنید که کدام کوئریها زمان بیشتری دارند یا چند بار تکرار شدهاند.
گام ۵: ستون Component را بررسی کنید تا منبع مشکل مشخص شود
شما باید ببینید کوئریهای کند یا پرتکرار مربوط به کدام افزونه یا قالب هستند. اگر چند مورد سنگین از یک Component باشد، همان بخش مظنون اصلی است.
گام ۶: HTTP API Calls را برای کندیهای بیرونی چک کنید
اگر در HTTP API Calls زمان بالا یا Status خطادار دیدید، احتمال دارد همان درخواست بیرونی باعث توقف بارگذاری صفحه شده باشد. در این مرحله افزونهای را که Component نشان میدهد یادداشت کنید.
گام ۷: PHP Errors را بررسی کنید تا خطاهای پنهان را از دست ندهید
اگر Warning یا Notice زیاد باشد، مخصوصاً اگر در مسیرهای پرتکرار اجرا شود، میتواند زمان پردازش را بالا ببرد. Location را نگاه کنید تا فایل و خط دقیق مشخص شود.
گام ۸: Doing it Wrong را به عنوان علامت تداخل یا اجرای نادرست ببینید
این بخش معمولاً خطای بحرانی نیست، اما میتواند نشانه اجرای زودهنگام یا نادرست یک بخش از کد باشد. اگر پیام تکراری دارید، به Component توجه کنید و بهروزرسانی را جدی بگیرید.
گام ۹: یک تغییر کوچک انجام دهید و دوباره مقایسه کنید
عیبیابی باید مقایسهای باشد. شما باید یک تغییر کوچک انجام دهید، مثلاً یک قابلیت را خاموش کنید یا یک افزونه را موقتاً غیرفعال کنید، سپس همان صفحه را دوباره بررسی کنید و عددها را مقایسه کنید.
گام ۱۰: نتیجه را ثبت کنید
در نظر داشته باشید که بهترین خروجی را وقتی میگیرید که قبل و بعد را یادداشت کنید. زمان ساخت صفحه، تعداد کوئریها، کندترین کوئریها، و افزونه یا قالبی که Component نشان داده است را ثبت کنید.
اشتباهات رایج هنگام استفاده از Query Monitor
یکی از اشتباهات رایج هنگام کار با Query Monitor این است که فقط یک بار صفحه را بررسی کنید و بر اساس همان عددها تصمیم بگیرید. نتایج باید چندین بار و در شرایط مشابه ثبت شوند تا بتوانید مقایسه دقیقی انجام دهید. همچنین بسیاری از کاربران قبل و بعد از اعمال یک تغییر، مقایسه عددی انجام نمیدهند و همین موضوع باعث برداشت اشتباه میشود. از طرف دیگر این افزونه نباید برای مدت طولانی روی سایت اصلی فعال بماند، چون این ابزار در جهت عیبیابی موقت استفاده میشود نه یک افزونه دائمی. در نهایت هرگز بدون بررسی ستون Component تصمیم گیری نکنید، زیرا این ستون دقیقاً نشان میدهد هر کوئری از کدام افزونه یا قالب اجرا شده است و مسیر تحلیل را مشخص میکند.
جمعبندی
Query Monitor یک ابزار دقیق برای تحلیل عملکرد داخلی وردپرس است. اگر به شکل مرحلهای و گام به گام از آن استفاده کنید، میتوانید بدون حدس و گمان عامل کندی را شناسایی کنید. شما با کمک دادهها میتوانید افزونه یا قالب مشکلدار را تشخیص دهید، خطاهای پنهان را ببینید و برای بهینهسازی تصمیم درست بگیرید. اگر این مراحل را درست انجام دهید، کنترل بیشتری روی عملکرد وردپرس دارید و میتوانید سرعت و پایداری سایت خود را به شکل اصولی بهبود دهید.




