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

همانطور که حتماً به گوشتان رسیده است که سرعت وب سایت مسئله خیلی مهمی در بهبود رنکینگ گوگل به حساب میاد.

سرعت سایت نه فقط برای بهبود رنک موتورهای جستجو، بلکه برای مالک وب سایت و همچنین کاربران اینترنت بسیار مهم می باشد.

زمانی که فروشگاه مجنتوی شما برای کاربر اینترنت به کندی باز شود احتمال اینکه مشتری سایت شما را ترک کند و یا حتی از رقیب شما خرید کند بسیار زیاد است.

یکی از مسائلی که شرکت نت وب به صورت روزانه با آن سر و کار دارد بهبود وضعیت سرعت و پرفورمنس وب سایت می باشد که در اینجا بخشی از تجربیاتمان را در اختیارتان قرار می دهیم.

1-پیکربندی سرور برای بهبود پرفورمنس مجنتو

  • تهیه یک سرور اختصاصی ( Dedicated Server )

  • کل سرور در اختیار شما قرار دارد و می توانید هر پکیج مورد نیاز خود را بر روی آن نصب کنید و یا فقط پکیج مورد نیاز خود را روی سرور داشته باشید

    به عنوان مثال زمانی که از یک Shared Host استفاده می کنید که بر روی آن کنترل پنل هاستینگ نصب شده است بسیاری از پکیج هایی که شاید خیلی از آنها برای مجنتو نیاز نباشد به طور پیشفرض نصب می باشد (مثل Dovecot ، Postfix ، Bind ، Web File Manager ، PhpMyAdmin و …)و …)

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

  • امکان به روز رسانی وب سرور ، دیتابیس سرور ، نسخه PHP و … را به شما می دهد.

  • مشتری دیگری به جز شما بر روی سرور دسترسی ندارد و بنابر این این احتمال که شخص دیگری یک اسکریپت مخرب بر روی هاست خود بارگذاری کند و به فایل های شما دسترسی پیدا کند وجود ندارد.

  • مشتری دیگری بر روی سرور شما وجود ندارد تا با اجرای یک اسکریپت بد سرعت سرور را بگیرد.

  • آی پی سرور با دیگران Share نیست و این برای SEO بسیار مهم می باشد.

  • اگر مشتری دیگری یک بیزینسی داشته باشد که گوگل آی پی آن را بلاک کند این امر باعث تاثیر بر روی وب سایت شما و رنکینگ سئوی شما نیز می شود.

  • در صورت امکان وب سرور را از سرور دیتابیس جدا کنید.

  • وب سرور و دیتابیس سرور هر یک الزامات مختلفی دارند.

    به عنوان مثال یک دیتابیس سرور می بایست Memory زیاد و هارد سریع (به عنوان مثال هارد SSD یا هارد SAS سرعت بالا و یا SAN Storage های پر سرعت که با فیبر نوری و HBA به سرور متصل می شوند) داشته باشد اما یک وب سرور نیاز به CPU زیاد دارد.

  • پیشنهاد می شود یک سرور مجزا برای Backend در نظر بگیرید تا هم کاربران پنل ادمین به آن متصل شوند و هم اینکه Cron Job های مجنتو بر روی آن اجرا شود.

  • ترجیحاً از به روز ترین نسخه ی Mysql استفاده کنید و یا حتی از Percona XDB استفاده کنید.

  • پیکربندی درست Mysql

  • یکی از مهم ترین جنبه های بحث پرفورمانس مجنتو بهینه سازی تنظیمات mysql می باشد که می تواند تا 65 درصد به بهبود پرفورمنس فروشگاه بیانجامد.

    پیشنهاد می شود Caching را روی سرور mysql فعال کنید تا برای دریافت اطلاعات از هارد سرور به I/O کمتری نیاز داشته باشد.

    در اینجا توصیه می شود زمانی که سرور دیتابیس از وب سرور جدا است 80 درصد از میزان Available Memory خود را برای کش در نظر بگیرید.

  • سایر تنظیمات mysql نیز بهتر است به این شکل باشد.

بهبود پرفورمنس مجنتو 


innodb_thread_concurrency = 2 * [numberofCPUs] + 2
 innodb_flush_log_at_trx_commit = 2
 thread_concurrency = [number of CPUs] * 3
 thread_cache_size = 32
 table_cache = 1024
 query_cache_size = 64M
 query_cache_limit = 2M
 join_buffer_size = 8M
 tmp_table_size = 256M
 key_buffer = 32M
 innodb_autoextend_increment=512
 max_allowed_packet = 16M
 max_heap_table_size = 256M
 read_buffer_size = 2M
 read_rnd_buffer_size = 16M
 bulk_insert_buffer_size = 64M
 myisam_sort_buffer_size = 128M
 myisam_max_sort_file_size = 10G
 myisam_max_extra_sort_file_size = 10G
 myisam_repair_threads = 1

  • بهتر است از پس از جند روز کار با mysql پیکربندی شده طریق اسکریپت MySQLTuner یکبار دیگر mysql خود را tune کنید زیرا که این تنظیمات بر روی هر سرور با توجه به میزان منابع سخت افزاری ، بازدید کننده ها و … می تواند متفاوت باشد.

  • هارد دیسک های خود را با گزینه noatime به سرور mount کنید.

  • برای این کار کافیست فایل /etc/fstab را باز کنید و پارتیشن / سرور و یا سایر پارتیشن هایی که ممکن است I/O زیادی بر روی آن ها باشد را به شکل زیر تغییر دهید.

/dev/mapper/ LogVol00 /tmp                    ext4    defaults,noatime   0 1

  • برای Dynamic Data از Memory Base File System ها استفاده کنید.

  • می توانید برای کاهش I/O هارد دیسک دایرکتوری های /var/cache و /var/session را از طریق ابزارهای tempfs و RAMdisk به Memory منتقل کنید.

  • سرور را در کشوری که بیشترین کاربرتان در آن کشور قرار دارد هاست کنید.

  • نزدیکترین محل به مشتریانتان باعث سریعتر پاسخ دادن به آن ها می شود.

    در تمامی کشورها از جمله کشورهای ما دیتاسنتر هایی وجود دارند که می توانید با پرداخت هزینه ای سرور خود را در آن جا Co-Locate کنید.

  • ترجیحاً از جدیدترین و به روزترین نسخه PHP استفاده کنید.

  • Php نسخه 5.2 بسیار قدیمی و کند می باشد.

    php نسخه 5.3 حدود 30 تا 40 درصد سریعتر از نسخه 5.2 و Memory کمتری استفاده

    php نسخه 5.4 حدود 20 درصد از 5.3 نیز سریعتر است.

  • برخی از تنظیمات مورد نیاز برای فایل  php.ini سرور به شرح ذیل می باشد.

realpath_cache_size = 32k
 realpath_cache_ttl = 7200
 max_execution_time = 90
 max_input_time = 90
 memory_limit = 256M
 default_socket_timeout = 90
 pdo_mysql.cache_size = 2000
 output_buffering = 4096

 


  • از یک سیستم کش مثل APC برای افزایش سرعت PHP استفاده کنید.

  • به طور پیشفرض مجنتو دیتاهای Cache را بر روی فایل سیستم ذخیره می کند.

    این کار در بیزینس های کوچک بسیار مناسب ایت اما در فروشگاه های پر بازدید باعث افزایش خواندن و نوشتن لحظه به لحظه و در نهایت افزایش I/O بر روی دیسک می شود.

    با APC شما دیگر این مشکل را نخواهید داشت زیرا که این دیتاها بر روی Memory سرور قرار می گیرد.

  • نمونه ای از تنظیمات APC در  php.ini

 

apc.enabled = 1

apc.optimization  = 0

apc.shm_segments = 1

apc.shm_size = 768M

apc.ttl = 48000

apc.user_ttl  = 48000

apc.num_files_hint = 8096

apc.user_entries_hint = 8096

apc.mmap_file_mask = /tmp/apc.XXXXXX

apc.enable_cli = 1

apc.cache_by_default  = 1

apc.max_file_size = 10M

apc.include_once_override = 0
  • از وب سرور Nginx به جای Apache استفاده کنید.

  • بدون شک یکی از قویترین وب سرورها از نظر Performance و Reverse Proxy وب سرور Nginx می باشد.

  • فشرده سازی Gzip را بر روی nginx یا Apache فعال کنید.

  • برای فایل های استاتیک Expiration Header تنظیم کنید.

Configuration for nginx vhost: 
 location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|eot|mp4|ogg|ogv|webm)$ {
 expires max;
 access_log off;
 }
 Apache:
 Make sure the module “mod_expire” is enabled
  • فقط ماژول های مورد نیاز برای Apache رو فعال نگه دارید.

  • KeepAlive را در وب سرور فعال کنید.

  • CDN پیکربندی کنید.

  • روی سرور Production خود حتماً Xdebug و Zend Debugger را غیر فعال کنید.

    2- پیکربندی مجنتو برای بهبود پرفورمنس

  • در صورتی که از یک وب سرور استفاده می کنید در فایل /app/etc/locale.xml تنظیمات مربوط به APC را به این صورت وارد کنید.

    ...
      apc
     mgt_
  ...
  • در صورتی که از چندین وب سرور همزمان استفاده می کنید می بایست از MemCached به عنوان یک cache متمرکز استفاده کنید.

...
  memcached    
...
  • Session ها را در Memory نگه دارید.

  • در راهکارهای تک سروری از Memory Base File System هایی مثل tempfs و RAMdisk می توانید استفاده کنید.

  • هر گونه Extentionی که بر روی مجنتو نصب کرده اید و ضروری نیست حذف کنید

  • در مسیر System -> Configuration -> Catalog -> Catalog -> Frontend وارد شوید و گزینه های Use Flat Catalog Category و Use Flat Catalog Product را روی Yes  قرار دهید.

بهبود پرفورمنس مجنتو

  • گزینه های “Merge JavaScript Files” و “Merge CSS Files” را روی yes قرار دهید.

بهبود پرفورمنس مجنتو

  • حتی الامکان از layered navigation استفاده نکنید

  • از افزونه ioncube encrypted که برای Encode کردن فایل های PHP کاربرد دارد استفاده نکنید

  • تعداد محصول نمایش داده شده در صفحه کتیگوری را حتی الامکان محدود کنید

System -> Configuration -> Catalog -> Catalog -> Frontend

بهبود پرفورمنس مجنتو

  • لاگ مجنتو را غیر فعال کنید (به طور پیشفرض غیر فعال است)

System -> Configuration -> Advanced -> Developer -> Log Settings

بهبود پرفورمنس مجنتو

  • Cron و Log Cleaning را فعال کنید

System > Configuration > Advanced > System -> Log Cleaning

بهبود پرفورمنس مجنتو

        3- تغییرات Front End

  • تصاویر سایت می بایست بهینه شده و فشرده شده باشد

  • فایل های javascript می بایست minimize شده باشد

  • ابعاد تصاویر مشخص شده باشد (image Dimensions)

  • بلاک هایی که از آن ها استفاده نمی کنید را از لیوت های XML تان حذف کنید

  • از Lazy Image Loader استفاده کنید

  • ترجیحاً از قالب های سبک و کم حجم استفاده کنید

    4-صفحه استاتیک خاص

    در صورتی که بر روی یک صفحه استاتیک خاص ترافیک بسیار زیادی دارید (به عنوان مثال بر روی یک صفحه تبلیغاتی به صورت PopUp قرار دادید) می توانید از Varnish cache نیز استفاده کنید.کش varnish برای آن دسته از وب سایت هایی که بازدید بسیار زیادی دارند اما محتوای آن ها به لحظه تغییر نمی کند می تواند بسیار قوی و تاثیر گذار باشد زیرا که به این صورت عمل می کند که بین وب سرور و کاربر قرار می گیرد و خروجی html وب سایت را در حافظه RAM کش می کند و اگر بار دوم درخواستی برای آن صفحه برسد ، صفحه از داخل رم برای کاربر لود می شود و درخواست سمت وب سرور و php و mysql نمی رسد بنابر این سرعت به طور چشم گیری افزایش می یابدپیکربندی این نوع کش برای مجنتو نیاز به تجربه زیادی دارد و در صورتی که میخواهید آن را پیکربندی کنید توصیه می شود حتماً ابتدا در محیط Development این کار انجام شود و پس از تست بر روی سرور Production پیاده سازی شود.

    جهت آگاهی بیشتر می توانید با کارشناس ان ما صحبت کنید.

با کارشناسان خبره ما در ارتباط باشید

در این راستا کارشناسان نت وب علاوه بر داشتن ارتباط مستمر با مشتریان، بطور پیوسته در حال بهبود ارتقاء سطح دانش فنی کارشناسان حرفه ایی خود می‎باشد تا بدینوسیله علاوه بر افزایش رضایت مشتریان و بالابردن کارایی سیستم‎ها، مزیت رقابتی بهتری را برای مشتریان خود فراهم سازد.در صورت وجود هر گونه سوال در مورد مطلب فوق می توانید به راحتی از طریق هر یک از بستر های ارتباطی مدرن با ما در ارتباط باشید

تماس با 45829
مرکز پشتیبانی

با کارشناسان خبره ما در ارتباط باشید

در این راستا کارشناسان نت وب علاوه بر داشتن ارتباط مستمر با مشتریان، بطور پیوسته در حال بهبود ارتقاء سطح دانش فنی کارشناسان حرفه ایی خود می‎باشد تا بدینوسیله علاوه بر افزایش رضایت مشتریان و بالابردن کارایی سیستم‎ها، مزیت رقابتی بهتری را برای مشتریان خود فراهم سازد.در صورت وجود هر گونه سوال در مورد مطلب فوق می توانید به راحتی از طریق هر یک از بستر های ارتباطی مدرن با ما در ارتباط باشید

تماس با 45829
مرکز پشتیبانی