مروری بر روش های بهینه سازی دروپال برای سرعت بیشتر (قسمت سوم)

این مقاله، دنباله ی مقاله ی قبلی است. برای مطالعه ی قسمت پیشین آن، لطفا به لینک های زیر مطلب مراجعه کنید
تغییر پایگاه داده ی سایت به یک سیستم سریع تر
8 - پایگاه داده ی پیش فرض دروپال MySQL می باشد که پایگاه داده ی بسیار قدرتمندی می باشد. اما در برخی موارد بهترین گزینه نیست. در برخی موارد هم راه حل های سریع تری موجود می باشد:

  • استفاده از پایگاه داده ی MariaDB و یا Percona به جای MySQL توصیه می شود. این دو پایگاه داده کاملا با MySQL سازگار هستند و لذا دروپال به خوبی بر روی این دو نصب می شود.
  • پایگاه داده ی Postgresql یکی از پیشرفته ترین پایگاه داده های متن باز موجود می باشد و توسط دروپال به خوبی پشتیبانی می شود.
  • پایگاه داده ی SQlite ساده ترین پایگاه داده ی موجود می باشد و اطلاعاتش را در درون یک فایل قابل حمل ذخیره می کند. در هاست های اشتراکی که سرعت دیتابیس MySQL کند است، می توانید از Sqlite به جای MySQL استفاده کنید. در کاربرد های ساده، سرعت دسترسی به پایگاه داده ی SQlite چندین برابر سریع تر از MySQL است.
  • در صورتی که بتوانید از Microsoft SQL Server و یا Oracale Database استفاده کنید، بسیار عالی می باشد. من دروپال را با Microsoft SQL Server بدون هیچ مشکلی نصب و استفاده کرده ام. بدون شک Microsoft SQL Server و Oracle پیشرفته ترین و بهترین پایگاه داده های موجود در حال حاضر می باشند.
  • پایگاه داده ی MongoDB یک پایگاه داده ی NoSQL می باشد و دسترسی به آن توسط API خاصی صورت می گیرد. ساختار داخلی آن هم تفاوت های عمده ای با پایگاه داده های SQL دارد. به همین خاطر نصب دروپال بر روی MongoDB مشکلات متعددی دارد و ممکن است بسیار دشوار باشد. با این حال اگر بتوانید دروپال را بر روی MongoDB پیاده سازی کنید، به خصوص در ترافیک های بالا، سرعت سایت چندین برابر سریع تر خواهد بود.
    ماژول mongodb برخی از جداول دروپال را به روی پایگاه داده ی Mongodb منتقل می کند. همچنین ماژول دیگری هم موجود می باشد (mongodb_dbtng) که MongoDB را با dbtng متصل می کند و اجازه می دهد که دروپال را بر روی mongodb نصب کنید. البته ماژول مذکور ایراد های فراوانی دارد و فعلا قابل استفاده نمی باشد.
    همچنین راه حل هایی هم موجود می باشد که به mongodb یک لایه ی مبتنی بر SQL اضافه می کند و اجازه می دهد که بر روی mongodbکدهای SQL اجرا کنیم. اما من این روش ها را امتحان نکرده ام و نمی توانم راجع به آن اظهار نظر کنم.
  • پایگاه داده ی Akiban یک پایگاه داده ی جدید می باشد که از نوع NoSQL می باشد. اما دارای یک واسط SQL برای Postgresql می باشد و لذا akiban هم مزایای پایگاه داده های NoSQL را دارد و هم مزایای SQL را!
    دروپال به سادگی می تواند بر روی Akiban نصب شود و سرعت دروپال بر روی این سیستم چند ده برابر سریع تر از MySQL می باشد.
    با این حال به دلیل این که پایگاه داده ی Akiban هنوز در حال توسعه می باشد، نمی توان آن را به عنوان یک راه حل کامل معرفی کرد.
    من دروپال را بر روی akiban تست کرده ام و به خوبی کار می کرد. البته یک سری خطاهایی موجود بود که ممکن است در نسخه های بعدی برطرف شود.
  • استفاده از پایگاه داده های VoltDB و یا Couchdb ممکن است مفید باشد (تست نکرده ام)(؟)
بهینه سازی سرعت اجرای کدهای PHP
9 - با استفاده از Op Code caching می توان سرعت اجرای کد php را افزایش داد و بهینه کرد. برخی از روش های معروف عبارتند از:

  • استفاده از APC
  • استفاده از eAccelerator
  • استفاده از xcache
  • استفاده از Zend Optimzer (با apc سازگار نیست)
»» برای ادامه ی مطلب، لطفا قسمت چهارم مقاله را مطالعه فرمایید. لینک ادامه ی مطلب و همچنین قسمت های قبلی این مقاله در زیر می باشد:

دیدگاه‌ها

خیلی ممنون از وقتی که گذاشتید.کل مقاله ها را خواندم.یه چند تا سوال داشتم زحمت میکشید اگر پاسخ دهید
1- ماژول boost رو قبلا هم استفاده کردم اما به مشکل میخورم.قالب من از ماژولهایی مثل اسلایدر زیادی استفاده میکنه و با این ماژول برای کاربران مهمان انگار جاوااسکریپت لود نمیشه و به هم ریخته میشه . مثلا عکس های اسلایدر ها زیر هم قرار میگیره و ثابت میمونه اما وقتی در سایت لاگین کنم درست میشه.

2- اون کش خود دروپال منظورم حداقل زمان نگهداری کش دروپال رو من گذاشتم روی 12 ساعت . منظورم performance در دروپال شش هست . نسخه من دروپال 6 هست..وقتی اینکارو کردم و میذارم روی کش دقیقا همون مشکل بالا اتفاق می افته یعنی صفحه اول سایتم موردی نداره منتها در صفحات داخلی به هم ریخته میشه و انگار هیچ استایل و جاوااسکریپتی در سایت لود نمیشه.وقتی در سایت لاگین کنم یا اینکه مازول رو غیرفعال کنم و کش رو خالی کنم اوکی میشه
یعنی نتونستیم حتی یه مورد این کش ها رو استفاده کنم!

3- کاهش عملیات I/O در سایت
این مورد رو توضیح میدید؟ چی هست و چه طور باید انجامش داد؟ البته با زبان ساده شاید بتونم به مدیر سرور بگم واسم اوکی کنه.هاست اشتراکی هستم

4- APC با xcache سازگاره؟ شنیدم لایت اسپید خودش این رو داره.مثلا من لایت اسید داشتم و با upload progress سازگار نبود
5- برای سایت من که از اسلایدر ها و اسلایدشو ویوز ها استفاده کردم در قالبم چی توصیه میکنید؟ کلا هیچ کاربر ثبت نام شده ای ندارم و برای کاربران مهمان میخوام سرعت بهتر باشه
دروپال شش هستم.مثلا ماژول speedy برای شش نیست

1 - احتمالا ماژول boost را درست تنظیم نمی کنید یا تنظیمات فایل .htaccess را درست وارد نمی کنید. چون من قبلا که ماژول boost را بر روی دروپال 6 تست کرده بودم، هیچ مشکلی نداشتم.
با این حال، اگر مشکل دارید، می توانید boost را غیر فعال کنید و از caching خود دروپال در صفحه ی performance استفاده کنید. همچنین برای کاهش ترافیک سایت می توانید از سرویس cloudflare استفاده کنید. سرویس مناسبی است و به احتمال قوی مشکل شما را مرتفع خواهد کرد.
2 - متوجه این گزینه نشدم. با این حال، حتما مشکلی در تنظیمات سایت شما موجود است زیرا بعید است که caching خود دروپال هم تولید مشکل کند.
3 - کاهش عملیات I/O به این معنی است که کاری کنید که دسترسی به هارد دیسک، شبکه ، و پایگاه داده در سیستم تان به حد اقل برسد. احتمالا شما نمی توانید این کار را انجام دهید. زیرا این مورد عملا بیشتر برای برنامه نویسان و مدیران سیستم قابل توجه خواهد بود.
4 - من راجع به xcache اطلاعات زیادی ندارم. فکر نمی کنم که در هاست های اشتراکی امکان استفاده از xcache موجود باشد. ولی در اکثر هاست های اشتراکی از zend optimizer استفاده می شود که کفایت می کند.
در ضمن برخی از افزونه های php در برخی محیط ها قابل استفاده نیست. به عنوان مثال من با nginx کار می کردم، uploadprogress برای این وب سرور قابل استفاده نیست. البته یک افزونه ی دیگر هست که به جای آن استفاده می شود و همان کار را انجام می دهد.
5 - بهترین توصیه ای که می توانم به شما بکنم، این است که به دروپال 7 مهاجرت کنید زیرا به زودی در چند ماه آینده، با انتشار دروپال 8، دروپال 6 از پشتیبانی خارج می شود.
اگر نمی خواهید یا نمی توانید که از دروپال 7 استفاده کنید، توصیه می کنم حتما به جای آن از pressflow استفاده کنید.
pressflow همان دروپال 6 است که برای performance بهتر بهینه شده است.
جایگزین کردن با pressflow آسان است و مانند به روز رسانی دروپال می باشد.
و یا می توانید از aquia drupal استفاده کنید.
6 - به عنوان راه حل نهایی، اگر تمایل دارید که برای سایتتان هزینه کنید، می توانید با پرداخت هزینه اندک ماهیانه، یک سرور مجازی برای سایتتان خریداری کنید و یا از خدمات پولی جهت انتقال سایت و ... استفاده نمایید. همچنین هاست های پر سرعت و با کیفیت بالاتر هم موجود می باشد.
موفق باشید.

I love Drupal

تشکر از پاسخ کاملتان
من ماژول css embeded image رو نصب کردم و خوب تاثیر داشت هدر سایتم واقعا زود لود میشود :)
طبق ماژول من فقط نصبش کردم و بهینه سازی فایلهای css رو از performance فعال کردم . الان واقعا تاثیرش رو توی لود اون هدر سایتم دیدم . کار خاصی نباید بکنم دیگه برای این ماژول ؟ چون گفتید قبلا با همه این ماژولا کار کردید اینارو میپرسم ازتون که تجربشو داشتید

2- اون مشکل مربوط به کش بلوک بود . وقتی کش بلوک فعال میشد هیچ فایل جاوااسکریپتی از بلوکها نمیخوند . با غیرفعال کرد کش بلوک حل شد

3- من روی سرور memcache و xcache نصب دارم.یعنی اینا روی سرور فعاله . روی سرور zend نصب هست و این دو تارو هم گفتم واسم نصب کنن و چون مدیر سرور آشنا بود نصب کرد (چون به نظر تداخلی با هم ندارند و در هاست اشتراکی مشکلی بوجود نمیاره)
الان memcache و xcache و زند روی سرور نصبه.ظاهرا دو تای اولی ماژول داره . کلا برای بکارگیری این سه تا با همدیگه نظری دارید؟ صلاح میدونید؟ چه طور ازشون استفاده کنم استفاده از این سه مورد همزمان مشکلی بوجود نمیاره ؟

بینهایت سپاس :)

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

1 - ماژول css em image نیاز به پیکربندی ندارد. البته پیکربندی اندکی در صفحه ی performance دارد که نیازی نیست آن ها را ویرایش کنید.
2 - کش بلاک ها نباید تولید مشکل کند. مگر این که داخل بلاک هایتان کد php نوشته باشید که روش اشتباهی است. البته من نمی دانم که در سایت شما چه تنظیماتی را استفاده کرده اید.
3 - ماژول های موجود برای xcache و memcached را تست کنید و ببینید مشکل به وجود می آورد یا نه. من تا به حال تست نکرده ام. بعید هم می دانم که مشکلی داشته باشد. از این ماژول استفاده کنید:
http://drupal.org/project/cacherouter
4 - مجددا متاسفانه من با لایت اسپید کار نکرده ام و نمی دانم که راه حل آن چیست. با این حال باید بتوانید با جستجو در گوگل راه حلی پیدا کنید.

اگر هدفتان فقط افزایش سرعت سایتتان می باشد، راحت ترین کار این است که سعی کنید ماژول boost و همچنین cloudflare را راه بیاندازید. (و ماژول های آسانی مثل entitycache و css_emimage و توزیع pressflow استفاده کنید.)

اما اگر قصد یادگیری دارید، اکیدا توصیه می کنم که از یک سرور VPS ارزان قیمت استفاده کنید (یا این که با استفاده از virtualbox بر روی سیستم خودتان تست کنید و کاملا مجانی خواهد بود) و در این صورت می توانید خودتان همه ی موارد را عملا تست کنید و تفاوت های وب سرور های apache و litespeed و nginx و همچنین apc و zend optimizer و... را بررسی کنید و کلیه ی مطالبی که در مقالات فوق نوشته ام را عملا تجربه کنید.

I love Drupal

بنده هم متشکرم از تلاشتون
یک سوال داشتم:
در شیوهای تغییر سرور پایگاه داده کدامیک برای یک سرور با توان پردازشی متوسط بهتر میتونه باشه؟
متشکرم.

اگر سرعت هارد دیسک محدود کننده باشه، استفاده از Sqlite به طور چشمگیری سرعت را افزایش میدهد.
البته به خاطر محدودیت هایی که داره، در جایی که نیاز به خواندن و نوشتن و Lock هست، و ترافیک سایت بالاست، توصیه نمی شه.

I love Drupal

افزودن دیدگاه جدید