راجع به کارایی دروپال
من چندین سال است که دروپال کار میکنم و همیشه از آن خیلی راضی بودم.
اما یک نکتهی تعجب بر انگیز این بود که در همهی این مدت عقیده داشتم که کارایی و سرعت دروپال خیلی بیشتر از Wordpress و Joomla و ... است.
و برای این عقیده دلیل هم داشتم و تجربه هم کرده بودم.
اما مدتی است که به عکس شده بود و همهی سایت های دروپالی ای که داشتم، همگی و دست جمعی با هم دست به یکی کرده بودند (!) و با هم کند شده بودند :)
فرقی هم نمی کرد که کدام سایت است. سایت هایی که روی سیستم ویندوز خودم داشتم، سایت هایی که روی VirtualBox و با Ununtu داشتم، سایت هایی که آنلاین بودند و بر روی سرور Debian بودند، سایت هایی که بر روی Directadmin و Centos داشتم، همه و همه به شدت کند شده بودند!...
جریان خیلی مشکوک می زد و .... :) بگذریم.
حالا به این نتیجه رسیدم که تقصیر از خود من بوده و دیدگاه من راجع به دروپال اشتباه بوده...
الان میتوانم بگویم که دروپال به طور کلی سیستم کندی است. نمی دانم که از وردپرس یا جوملا کندتر است یا خیر. چون من با این ها زیاد کار نکرده ام.
از مسائل شخصی که بگذریم، چند تا نکته هست که ممکن است برای دیگران مفید باشد. راجع به کارایی دروپال موارد زیر قابل ذکر است:
کلا دروپال سیستم سریعی نیست. البته می توان آن را سریع هم کرد. اما کلا چون دروپال برای توسعه داده شدن ساخته شده، لذا برنامه نویسی و توسعه ی آن آسان است. اما چنین سیستمی نمی تواند سریع هم باشد.
البته اشتباه هم نکنید، خود هسته ی دروپال به قدر کافی سریع است. من که می گویم دروپال کند است، منظورم دروپال توسعه داده شده و سفارشی شده است که کلی ماژول بر روی آن نصب شده باشد.
برای یک سایت سریع، باید حداکثر 100 تا ماژول فعال داشته باشید. هرچه تعداد ماژول ها کمتر باشد بهتر است. اگر فقط 40 الی 60 تا ماژول فعال داشته باشید، سایت مانند نور سریع خواهد بود...
بنا به تجربهی من، تا 100 عدد ماژول قابل تحمل است، اما اگر از صد تا بیشتر شد، سایت کند میشود و باید برای سرعت بخشیدن به آن، میزان رم سرور رو افزایش بدهید، apc استفاده کنید، ترجیحا از هارد ssd استفاده کنید و سرعت cpu را افزایش دهید و ..
البته حرفهای های این کار، می گویند که تا 150 تا ماژول خوب است و از 150 به بالا کند میشود (به نقل از omega8.cc)
1 - برای سرعت بخشیدن به دروپال، اول از همه تعداد ماژول ها را کاهش دهید و ماژول های غیر ضروری را حذف کنید.
2 - بعد، یک سری ماژول مضر را حذف کنید و یک سری ماژول خوب را نصب کنید. بعضی از ماژول های مضر بنا به تجربه ی من این ها هستند:
database logging, field permissions, cck, rules, relation
برخی از ماژول های مفید این ها هستند:
boost, authcache, esi, css_emimage, entity cache, memcached
3 - اگر می توانید، به جای این که از cck استفاده کنید، content type های مورد نظرتان رو خودتان کد نویسی کنید و یک ماژول سفارشی درست کنید. خیلی سریع تر میشود.
4 - برای فیلد های content type ها، بهتر است که تمام فیلد ها داخل یک جدول در دیتابیس باشد. رفتار پیش فرض دروپال این است که برای هر فیلدی، چند تا table درست می کند و این باعث می شود که تعداد join های دیتابیس زیاد شود و سایت کند شود.
اگر می توانید، یک ماژول درست کنید که تمام فیلد ها را داخل یک جدول قرار دهد.
5 - هرچه می توانید تعداد فیلد ها را کاهش دهید. مثلا اگر می خواهید فایل ضمیمه داشته باشید، فقط یک فیلد فایل و یک فیلد تصویر داشته باشید و بی خودی فیلد تکراری درست نکنید.
6 - ماژول های مجوز فیلد ها را در صورت امکان غیر فعال کنید چون تعداد زیادی join ایجاد می کنند.
7 - هر کاری را از راه استاندارد آن انجام دهید. مثلا داخل پوسته ی سایت، دستور SQL اجرا نکنید!
8 - کارها و ترفند های دیگری هم برای سرعت بخشیدن به دروپال موجود است که با تجربه بدست می آید و خارج از حوصله ی این پست می باشد...
9 - نرم افزار و سخت افزار سرور را بررسی کنید. فرقی نمی کند که سرور اختصاصی و یا اشتراکی باشد. دروپال باید بتواند بر روی سرور اشتراکی به خوبی کار کند، اما چند تا مسئله هست که اگر بر روی سرور رعایت شده باشد، سرعت دروپال زیاد می شود:
10 - از هاست هایی که Overselling انجام می دهند اکیدا پرهیز کنید.
11 - سروری که استفاده می کنید، اگر از مجازی سازی استفاده می کند، توجه کنید که حتی الامکان از OpenVZ و Virtuozzo استفاده نکرده باشد. زیرا بسیار پیش آمده که OpenVZ مشکلات فراوانی به وجود آورده.
OpenVZ را بد ترین انتخاب برای هاستینگ دروپال می دانند (به نقل از 2bits.com)
12 - بهتر است مجازی سازی سرور مبتنی بر VMware و یا Xen باشد. البته OpenVZ هم اگه درست پیکربندی شود، خیلی هم عالی است. منتها مشکل اینجاست که اکثر OpenVZ را درست پیکربندی نمی کنند و این مشکلاتی که عرض شد به وجود می آید.
13 - بهتر است که به عنوان وب سرور، از nginx استفاده کنید. نسبت به apache سرعت خیلی بیشتری دارد.
14 - برای PHP بهتر است از fastcgi استفاده کنید. ماژول mod_php در آپاچی خیلی کند است و اصلا توصیه نمی شود.
15 - دقت کنید که حتما apc فعال باشد. البته ظاهرا Zend Optimizer با آن مشکل دارد و نمی توانند در کنار هم کار کنند. در هر حال از Op code cahing استفاده کنید.
16 - اگر می توانید تلاش کنید که ترافیک دیتابیس MySQL را کاهش دهید. مثلا می توانید caching دروپال را با استفاده از redis-server و یا با apc و یا با memcached انجام دهید (هر کدام با دیگری فرق دارد)
17 - استفاده از هارد ssd به خصوص برای database خیلی سیستم را سریع می کند
18 - اگر تجربه ی خاصی راجع به کارایی دروپال دارید، لطف کنید و حتما برای من هم ارسال کنید. متشکرم :)
نظرات شما
قسمت نظرات با استفاده از سرویس دیسکاس پیاده سازی شده است. متاسفانه این سرویس از داخل ایران قابل دسترس نیست. لطفا از آی پی خارجی استفاده کنید.