انجمن


تعداد زياد افزونه = مصرف نجومي حافظه  (۲۴ نوشته)

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۲ خرداد ۱۳۸۸ - ۲۰:۰۲

    مسئله: يك سايتي داريم كه از وردپرس(2.7.1) استفاده ميكنه واسه اينكه يه سري مطلب رو نمايش بده و از قضا اينجا فقط وبلاگ نيست و چون خواستن قابليت سايتي به اون اضافه كنند اومدن و يه سري افزونه كه تعداد در حد فرض كنيد 10 تا هست رو نصب كردند و الان اين سايت حدود 1000 بازديد در روز داره كه نزديك هزار نفر هم هر روز بهش سر ميزنند رتبه اش در الكسا نشان ميده كه جزو 3000 سايت پر بازديد ايرانه و همچنين رنك گوگل هم 3 هست.
    تا اينجا همه چيز خوب و خوشه و سايت داراي اعتباري هست
    در ضمن روي يك VPS(سرور مجازي) 1 گيگا رم هم راه اندازي شده
    اما مشكلات اين سايت
    چون تعداد زيادي افزونه روي وردپرس نصب شده است و با توجه به ساختار وردپرس كه هر چي تنظيمات داره ميريزه توي يك جدول خاص از ديتابيس(wp_option) بنابراين وقتي تعداد زيادي كاربر همزمان از سايت استفاده ميكنند(مثلا 30 كاربر همزمان) ديتابيس سايت ميخوابه و به زودي خود وب سرور هم از كار ميافته و دديگه سايت خوابيده حالا اگر همين حجم كاربر روي يك سايت جوملا باشند حتي روي سرورهاي شئير هم مشكلي برايشان پيش نميايد
    اين رو هم بگم كه اين سايت روي يك هاست شئر بود اما مدير سرور به دليل استفاده بيش از حد از منابع سيستم ما رو بيرون كرد و مجبور شديم يك vps موقت بگيريم تا بتونيم مشكل رو حل كنيم و اگر حل نشد روي وردپرس خط بكشيم و بگيم گور باباش ميريم از جوملا استفاده ميكنيم
    اما خوب منتقل كردن هزار پست همراه با بيست هزار نظر كار ساده اي به نظر نميرسد.
    در ضمن بنده به توصيه آقا نويد از افزونه super cache هم استفاده كردم اما فايده نداشت
    دليل اين مشكلات در كل اينه كه وقتي كاربري صفحه اي رو درخواست ميكنه (همه اين افزونه ها نياز دارند از ان جدول اطلاعات و تنظيمات خود را دريافت نمايند + تنظيمات خود وردپرس)* تعداد كاربران انلاين = ترافيك شديد روي آن جدول(wp-option) و نتيجه از كار افتادن سرور به دليل پر شدن رم و سوپ سروز

    راه حلي كه به ذهنم ميرسه اينه كه بياييم و افزونه ها رو دستكاري كنيم كه تنظيمات خود رو از فايل بخونند كه اين فايل ميتونه در پوشه خود افزونه قرار بگيره و بايد كل كد افزونه ها را تغيير داد كه به نظر ميرسه از نظر عملي به صرفه نيست و عملي نيست اصلا بيخيال
    راه حل بعدي اينه كه جدول wp-option رو ببريم روي توي يك ديتا بيس ديگه و به وردپرس حالي كنيم كه آقا تنظيمات رو از روي اون يكي ديتابيس بخون
    حالا از همه دوستاني كه به قولي وردپرس كار خفن هستن مخصوصا آقا نويد و آقا ماني و.... خواهش ميكنم كمك كنند تا بتوانم وردپرس رو جوري دستكاري كنم كه ميزان مصرف حافظه اش كمتر بشه

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۳ خرداد ۱۳۸۸ - ۰۹:۳۴

    می‌تونین با افزونه‌ی DB Cache خیلی از queryهایی که به پایگاه‌داده فرستاده می‌شه رو cache کنین.

    همچنین با افزونه‌ی Optimize DB می‌تونین به‌راحتی پایگاه‌داده‌تون رو optimize کنین تا سریع‌تر بشه.

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۳ خرداد ۱۳۸۸ - ۱۸:۴۴

    گناهکار عزیز ممنون
    db cache رو که نصب کردم نتیجه این شد که تعداد کوپری من از حدود ۱۶۰ تا رسید به ۱۲۶
    به اینها توجه کنید:

    <!-- Generated in 1.530 seconds. Made 126 queries to database and 35 cached queries. Memory used - 18.58MB -->

    با این همه باز هم خیلی زیاده
    هر درخواست ۱۸ مگابایت رو اشغال میکنه
    در ضمن مجبور شدم سو‍رکش رو هم خاموش کنم چون در این صورت جواب نمیداد.
    راه حل بهتری ندارید
    یا حداقل بگید شاید نتوانسته باشم خوب تنظیمش کنم

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۳ خرداد ۱۳۸۸ - ۲۱:۳۸

    یه لیست از کوئری‌ها بگیرین ببینین بیشتر مربوط به کدوم افزونه هستن٬ این افزونه‌های امتیازدهی و این‌ها هم اگه دارین خاموش کنین.

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۴ خرداد ۱۳۸۸ - ۱۰:۴۶

    چطور میشه لیست کوییری ها را گرفت؟
    خود افزونه چنین چیزی نداره
    ----
    در ضمن از افزونه های امتیازدهی هم استفاده نمیکنیم

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۴ خرداد ۱۳۸۸ - ۱۱:۰۵

    این دستورات رو توی footer.php قرار بدین:

    <?php
    if ( current_user_can('manage_options') ) { ?>
    	<!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. -->
        <?php
    	echo "<!--\n";
    	var_dump($wpdb->queries);
    	echo "\n-->";
    }
    ?>
  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۴ خرداد ۱۳۸۸ - ۱۱:۳۳

    آقا قرار دادم اما خروجی اش Null شد :(( :((

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۴ خرداد ۱۳۸۸ - ۲۱:۲۹

    باید با کاربری که توانایی مدیریت تنظیمات رو داره بهش مراجعه کنین.

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۵ خرداد ۱۳۸۸ - ۰۰:۲۵

    خوب خودم مدیر هستم و ادمین سایت
    این کد شما را در فایل footer.php قالب قرار دادم اما نتیجه اش همان نول بود
    و چون قسمت اول کد اجرا شده ‍س مشکل از قابلیت ویرایش تنظیمات نیست
    به نظر میرسد متغیر مربوطه نول هست

  • گناهکار

    آفلاین
    کلیددار
    تعداد نوشته‌ها: ۳۵۳۵
    تشکر شده: ۲۵۴۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۵ خرداد ۱۳۸۸ - ۱۸:۱۶

    اینو امتحان کنین:

    <?php
    if ( current_user_can('manage_options') ) { ?>
    	<!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. -->
        <?php
    	echo "<!--\n";
    	print_r($wpdb->queries);
    	echo "\n-->";
    }
    ?>
  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۶ خرداد ۱۳۸۸ - ۱۶:۴۵

    آقا اینم جواب نداد
    انگار این متغیر اصلا وجود ندارد
    حتی من این متغیر را گلوبال کردم بازم خالی بود :(( :((

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۴:۳۷

    سلام
    آقای گناهکار در مورد تعداد کوئیری های بالا اکتشاف به عمل آمد که با خاموش کردن افزونه جلالی تعداد کوئری ها ۱۰۰ عدد کاهش میافت.
    شما هم یکبار درسایت خود امتحان کنید
    فکر میکنم هر بار که یکی از توابع افزونه صدا زده میشود یک کوئری به جدول گزینه ها option داده میشود تا تنظیمات افزونه دریافت شود و همین سبب میشود مثلا برای هر کامنت یک کوئری جدا به سرور فرستاده شود که ظاهرا هم db-cache انها را کش نمیکند
    خوشحال میشوم بررسی کنید و در اینجا جواب بدهید
    واقعا بدون افزونه جلالی سایت صفا ن داره

    ممنون

  • alighatta

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳۶۳
    تشکر شده: ۵۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۵:۲۷

    ببینم اگر افزونه جلالی رو نصب نکنیم مشکل اساسی پیش میاد؟
    مثلا یکی از بزرگترین مشکلات راست به چپ کردن ادیتور سایته؟ مثلا میلادی بودن تاریخ خیلی هم مهم نیست ولی مشکل مهمتری هم پیش میاد؟
    مثل مشکل ادیتور؟
    و میشه بدون افزونه حلشون کرد؟

  • AmirTnT

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳۰۰
    تشکر شده: ۲۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۸:۰۰

    خدا شانس بده ... من كه تا حالا روي هيچ كدوم از سايت هايي كه پشتيباني مي كنم افزونه جلالي مشكلي ايجاد نكرده

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۸:۴۹

    ببینم اگر افزونه جلالی رو نصب نکنیم مشکل اساسی پیش میاد؟
    هیچ مشکلی پیش نمیاد فقط تاریخ ها میلادی میشه و اعداد انگلیسی نمایش داده میشه

    مثلا یکی از بزرگترین مشکلات راست به چپ کردن ادیتور سایته؟
    این مربوط به تنظیم وردپرس روی زبان فارسی و داشتن فایل مربوط به راست و چپ کردن در فولدر زبانها است و ربطی به افزونه جلالی نداره و با خاموش کردن ان ادیتور و.... کار میکنند

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۸:۵۴

    من كه تا حالا روي هيچ كدوم از سايت هايي كه پشتيباني مي كنم افزونه جلالي مشكلي ايجاد نكرده
    اگر تعداد نظرات در سایت شما بالا باشد تعداد کوئری ها هم بیشتر میشود
    میتوانید افزونه db-cache رو نصب کنید و در سورس صفحه میتوانید تعداد کوئری ها را ببینید. چنین متنی در سورس صفحه خواهد بود
    <!-- Generated in 1.530 seconds. Made 126 queries to database and 35 cached queries. Memory used - 18.58MB -->
    بعد افزونه جلالی را خاموش کنید و دوباره تعداد کوئری ها را مشاهده کنید
    امتحانش مجانیه

  • alighatta

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳۶۳
    تشکر شده: ۵۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۹:۲۸

    یعنی اگر ما جلالی رو نصب نکنیم و بخواهیم ادیتورمون راست به چپ باشه باید چکار کنیم؟
    چون اگه اینطوری باشه جلالی به باری که روی دیتا بیس میزاره نمیصرفه :-?

  • ساری گلین

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۶۳
    تشکر شده: ۶۶ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۱۹:۵۵

    فقط کافیه به بخش افزونه ها برید و افزونه جلالی رو خاموش کنید

  • zxo003

    آفلاین
    عضو
    تعداد نوشته‌ها: ۵۸۳
    تشکر شده: ۵۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۲۹ تیر ۱۳۸۸ - ۲۰:۰۲

    یک پیشنهاد دارم به شما ، البته شما دقیقا نوع سایت مشخص نکردید ... اما

    وردپرس معمولی برای کارهای سبک است ، نه برای کارهای سنگین با افزونه های خیلی زیاد .... هرچند با بازدید کننده کم به خوبی جواب می دهد ...

    1- از وردپرس معمولی به نوع MU (چندکاربره مهاجرت کنید) ...
    2- وردپرس MU را به صورت دایرکتری نصب کنید (نه ساب دامین) ، اینگونه بازدید کنندگان شما هم متوجه هیچ تغییری نمی شوند .
    3- برای هر بخش (گالری ، وبلاگ ، بخش دانلود ، فروشگاه ) یک وبلاگ جدید ایجاد کنید ....
    4- نتیجه کار را مقایسه کنید ، باید به صورت حتم مصرف کلی رم شما کم شده باشد ... (مصرف هر بخش)
    5- بار وارده به هر بخش بر روی وردپرس های هر بخش تقسیم شده و عملکرد 100% بهبود میابد ....

    حالا به راحتی میتوانید حتی در یک سرور اشتراکی هم به فعالیت بپردازید ....

    ضمنا ، توجه کنید که وردپرس به تنظیمات PHP و MySQL هاست به شدت حساس است به همین علت است که بعضی ها با شرایط سنگین تر از شما به راحتی با سرور های اشتراکی کار میکنند ...

    عجب شکلک خوفی ، عاشقشم ، به عشق این شکلک میام اینجا :
    :O

  • alighatta

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳۶۳
    تشکر شده: ۵۴ بار
    # نوشته شده: ۱۵ سال پیش
    ۳۰ تیر ۱۳۸۸ - ۱۰:۳۱

    mehditey گفت:
    فقط کافیه به بخش افزونه ها برید و افزونه جلالی رو خاموش کنید

    منظور من این بود که اگر کلا جلالی نصب نکنم چی؟ من قصد دارم کلا نصب نکنم . اون وقت باید با ادیتور چکار کرد؟ :-?

  • pardisdownload

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰۵
    تشکر شده: ۷ بار
    # نوشته شده: ۱۵ سال پیش
    ۳۰ تیر ۱۳۸۸ - ۱۲:۲۴

    ببین روش زیر رو امتحان کن مطمئنم ذوق میکنی : :D :D :D
    فقط یادت باشه مرحله به مرحله بری جلو .
    این روش PHPNUKE ی را که در 47 ثانیه لود می شد به 11 ثانیه کاهش داد !!!!!!!!!!!
    برای دیدن روش اینجا کلیک کنید .

  • zxo003

    آفلاین
    عضو
    تعداد نوشته‌ها: ۵۸۳
    تشکر شده: ۵۵ بار
    # نوشته شده: ۱۵ سال پیش
    ۳۰ تیر ۱۳۸۸ - ۱۲:۴۸

    با شناسه root وارد SSH شده و فایل تنظیمات mysql را با ویرایشگری همچون vi ویرایش کرده و کد زیر را در آن قرار می دهیم بعد از فایل را ذخیره کرده و mysql را مجددا راه اندازی می کنیم.

    [mysqld]
    skip-locking
    skip-innodb
    query_cache_limit=1M
    query_cache_size=32M
    query_cache_type=1
    max_connections=500
    interactive_timeout=100
    wait_timeout=100
    connect_timeout=10
    thread_cache_size=128
    key_buffer=16M
    join_buffer=1M
    max_allowed_packet=16M
    table_cache=1024
    record_buffer=1M
    sort_buffer_size=2M
    read_buffer_size=2M
    max_connect_errors=10
    # Try number of CPU's*2 for thread_concurrency
    thread_concurrency=2
    myisam_sort_buffer_size=64M
    log-bin
    server-id=1

    [safe_mysqld]
    err-log=/var/log/mysqld.log
    open_files_limit=8192

    [mysqldump]
    quick
    max_allowed_packet=16M

    [mysql]
    no-auto-rehash
    #safe-updates

    [isamchk]
    key_buffer=64M
    sort_buffer=64M
    read_buffer=16M
    write_buffer=16M

    [myisamchk]
    key_buffer=64M
    sort_buffer=64M
    read_buffer=16M
    write_buffer=16M

    [mysqlhotcopy]
    interactive-timeout

    توجه بفرمایید متغییر های بالا بسته به نوع سخت افزار سرور و ... همچون باید تغییر کند تا سرویس دهنده mysql به بالاترین حد پاسخگویی و پایداری برسد.

    با استفاده از بهینه سازی صحیح مثلا می توان سایتی PHPNUKE ی را که در 47 ثانیه لود می شد به 11 ثانیه کاهش داد

    رستارت MYSQL :

    /sbin/service mysqld restart

    آقا این روی به نظر خودت روی سرور اشتراکی جواب میده ؟؟؟؟؟؟؟؟؟؟

    سرور اختصاصی هم داشته باشی که نیازی به این نداری که ....

  • pardisdownload

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۰۵
    تشکر شده: ۷ بار
    # نوشته شده: ۱۵ سال پیش
    ۳۰ تیر ۱۳۸۸ - ۱۳:۰۷

    عزیز من روی سرور مجازی که جواب میده که . ایشون سرور مجازی دارن . :-?

  • نوید

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳۷
    تشکر شده: ۷ بار
    # نوشته شده: ۱۳ سال پیش
    ۱۳ دی ۱۳۸۹ - ۱۹:۵۴

    دوست من دلیل مصرف بالای رم و سی پی ارتباطی با نصب زیاد پلاگین نداره بلکه به نوع پلاگین مربوط میشه.
    مثلا شما اگر از پلاگین های مقایسه ای استفاده کنید فک رم و سی پی یو با توجه به تعداد پست هاتون سرویس میشه
    هر چه ارسال ها بیشتر باشه زمان بیشتری برای لود سایت شما و پردازش ارسال ها و مقایشه اونها صرف میشه
    مثلا اگر پر بازدیدترین ها را توی سایت نمایش بدین یا پر امتیاز ترین ارسال را نمایش بدین این دو یا موارد مشابه مقایشه ای رم و سی پی یو را مصرفشو بالا می برند اساسی

    همچنین مورد دیگه که باعث افت سرعت لود میشه نوع نمایش لینک های شماست که باعث میشه عمل پردازش بیشتر طول بکشه
    البته این موارد بستگی به تعداد ارسال های شما داره و فکر میکنم زیر 500 یا هزار ارسال زیاد تاثیری نداشته باشه چون سایت بنده چندین هزار ارسال داره و این مورد برام خیلی محسوسه.
    به قدرت هاست شما هم بستگی داره که روی چه سرور و با چه امکاناتی باشه.
    افزونه های اوپیمایز و.. هم چندان کار خاصی انجام نمی دهند، افزونه های کش هم شاید یکم خوب باشن ولی از جهتی هم خوب نیستند چون آمار را به اشتباه می اندازند و دقیق آمار سایت گرفته نمیشه.
    موفق باشید

درباره‌ی این موضوع



برچسب‌ها

هیچ برچسبی نیست.