پارامتر xcache stat off در Bitrix مورد نیاز است. نصب XCache، پیکربندی xCache، تفاوت های ظریف. تنظیمات اولیه حافظه پنهان

مشترک شوید
به انجمن "page-electric.ru" بپیوندید!
VKontakte:

همانطور که می دانید، PHP یک زبان تفسیری است، یعنی. هر بار که به یک اسکریپت دسترسی پیدا می شود، اسکریپت کامپایل می شود. اگر 1 اسکریپت دارید، جای نگرانی نیست، زیرا زمان تدوین زیاد نیست. اما در CMS ها و فریم ورک های مدرن، 10-300 فایل php جداگانه (به عبارت دیگر شامل) هنگام نمایش یک صفحه استفاده می شود. هرچه گنجاندن بیشتر و سنگین‌تر باشد، فرآیند کامپایل بیشتر طول می‌کشد.

برای حل این مشکل، آنها به فکر ذخیره نسخه کامپایل شده اسکریپت در حافظه بودند. ماژول های خاصی برای ذخیره کدهای کامپایل شده در حافظه وجود دارد. به آنها شتاب دهنده می گویند.

معروف ترین: eAccelerator، APC، XCache. هر کدام مزایا و معایب خاص خود را دارند. من از XCache به عنوان سریع ترین و قابل اطمینان ترین استفاده می کنم. اگرچه هرکس نظر خود را در مورد قابلیت اطمینان دارد.

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

مدیر XCache

XCache دارای یک پنل مدیریت کوچک برای نمایش آمار و تنظیم مجدد حافظه پنهان است. معمولاً در اینجا /usr/local/share/examples/xcache/admin/ قرار دارد. بنابراین، باید این پوشه را به جایی به ریشه سایت یا پنل مدیریت خود منتقل کنید تا بتوانید آن را از مرورگر مشاهده کنید. می توانید پنل مدیریت را دانلود کنید.

این چیزی است که برای من به نظر می رسد

جدول اول آمار کلی را نشان می دهد. این شامل 2 خط است، زیرا من یک پردازنده 2 هسته ای دارم و XCache کش را بین هر دو هسته توزیع می کند. در کل من 512 میلیون اختصاص داده ام.

پنل مدیریت ممکن است خطای Fatal error را نمایش دهد: xcache_count(): xcache.admin.user و xcache.admin.pass
این بدان معنی است که شما مجوز را در پیکربندی xCache فعال کرده اید.
ساده ترین راه خاموش کردن آن است. من در سرور خود تنها هستم و نیازی به تنظیم رمز عبور در سرور ندارم.
مجوز در پیکربندی xcache.admin.enable_auth = خاموش غیرفعال است

پیکربندی xCache معمولاً در /etc/php5/conf.d/xcache.ini قرار دارد
پس از ویرایش تنظیمات، باید آپاچی را مجددا راه اندازی کنید.

آمار xCache

بیایید به پنل مدیریت برگردیم (تصویر بالا را ببینید).

شکاف ها- تعداد اسلات های کش این درک من از اینکه حافظه اختصاص داده شده به چند قسمت تقسیم شده است. در مورد من 8000 است. هر چه این مقدار بیشتر باشد، سریعتر می رودجستجو کنید، اما به حافظه بیشتری نیاز دارد.

اندازه- اندازه حافظه برای XCache

فایده- چقدر حافظه باقی مانده است. ظاهرا چیزی برایم باقی نمانده است. تمام 512 مگابایت پر است

پاک کردن- دکمه تنظیم مجدد حافظه پنهان

بازدیدها- تعداد دسترسی به فایل انجام شده است

خانم ها- چند تماس با فایل ها انجام شد، اما این فایل ها در حافظه نبودند. این یک روند عادی است. فایل ها تغییر می کنند - آنها از حافظه پنهان خارج می شوند. اما در مورد من، همه فایل‌ها به سادگی در حافظه قرار نمی‌گیرند، بنابراین در آنجا نیستند و بر این اساس مواردی از دست رفته است.

گرفتگی- اینطوری می فهمم که چند بار برای بعضی از فایل ها به کش رفتیم، اما در آن زمان این فایل ها هنوز در حال کامپایل بودند، یعنی. انسداد وجود داشت

OOMs- چند بار فایل ها به دلیل کمبود حافظه در حافظه پنهان قرار نمی گیرند.

ذخیره شده است- تعداد فایل های موجود در کش در کل من 6400 فایل دارم.

تنظیمات xCache

چند کلمه در مورد اینکه چقدر حافظه باید اختصاص داده شود. در ابتدا 128 مگابایت اختصاص دادم اما این حافظه در 10 دقیقه پر شد. بنابراین من 512 مگابایت را اختصاص دادم و این حجم قبلاً در 1 ساعت پر شده بود. به نظر می رسد که شما می توانید 1 گیگابایت را اختصاص دهید و سپس همه چیز قطعاً مناسب است. اما تنها 4 گیگابایت حافظه وجود دارد و بهتر است آن را به MySQL اختصاص دهید (در مورد آن بیشتر). علاوه بر این، فایل‌هایی که ظرف یک ساعت کش نشده‌اند، به ندرت اسکریپت مورد استفاده قرار می‌گیرند. به سادگی سایت هایی وجود دارند که 10-100 نفر در روز از آنها بازدید می کنند و می توانید بدون ذخیره سازی در آنجا انجام دهید. این به اصطلاح "دم بلند" است که به ندرت استفاده می شود، اما فضای زیادی را اشغال می کند. در مورد من 3٪ است (از دست دادن / بازدید).

چه چیز دیگری را نباید فراموش کرد. فرض کنید در یک پروژه بزرگ مقداری کد را تغییر داده اید. فضای حافظه آزاد شده است و فایل های پروژه های کم حجم را می توان در این فضای خالی نوشت. بر این اساس، فایل های یک پروژه بزرگ ذخیره نمی شوند. به زبان ساده، XCache نمی‌داند چگونه فایل‌هایی را که می‌توانند از حافظه پنهان پرتاب می‌شوند را ردیابی کند و فایل‌هایی که اغلب درخواست می‌شوند را می‌توان در جای خود قرار داد (این به اصطلاح کش «داغ» است). بنابراین، باید کش را به صورت دستی از طریق پنل مدیریت بازنشانی کنید.

جدول پایین نشان می دهد که کدام فایل ها در حافظه نهان ذخیره می شوند و چقدر موثر هستند.

بازدیدها- تعداد تماس های این اسکریپت در حافظه. هر چه بیشتر، بهتر. اگر برای برخی از فایل ها برای مدت طولانیاین مقدار کمتر از 10 است، یعنی این فایل به ندرت استفاده می شود و فقط فضایی در حافظه اشغال می کند.

اندازه- اندازه این فایل در حافظه. در اینجا جالب ترین قسمت است. به نظر می رسد که فایل کامپایل شده 10 برابر فضای بیشتری در حافظه نسبت به دیسک اشغال می کند. OMG!

SrcSize- اندازه فایل روی دیسک

دسترسی داشته باشید- چند وقت پیش به این فایل دسترسی پیدا شد

ایجاد کنید- مدت زمان این فایل در حافظه پنهان بوده است

پیکربندی من
xcache.size = 512M
xcache.count = 2
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 0M
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.test = خاموش
xcache.cacher = روشن
xcache.stat = روشن

همانطور که می بینید، من استفاده از XCache را برای ذخیره نتایج محاسبات غیرفعال کردم (xcache.var_size = 0M). برای این من Memcache دارم.

خوب، نتایج واقعی: شتاب 2-3 برابر. اگر قبلاً صفحه در 0.3 ثانیه (شامل Memcache) ایجاد می شد، اکنون 0.1 ثانیه طول می کشد. این نمونه ای از یک پروژه در CMS LiveStreet است.

.
فرآیند نصب بسیار ساده است:

# wget http://xcache.lighttpd.net/pub/Releases/1.3.1/xcache-1.3.1.tar.gz
# tar zxf xcache-1.2.2.tar.gz
# سی دی xcache-1.2.2
#phpize
# ./configure --enable-xcache
# ساخت && نصب کردن

اما بدون مشکلات پیش بینی نشده نبود. اولا، phpize در ابتدا پیدا نشد. همانطور که مشخص شد، نصب بسته php-devel (#yum install php-devel) ضروری بود. ثانیا، خطایی در مرحله اسمبلی رخ داد - کامپایلر از فایل هدر timelib_config.h مفقود شکایت کرد. پس از یک جستجوی کوتاه در گوگل، راه حل پیدا شد: در فایل /usr/include/php/ext/date/lib/timelib_structs.hنیاز به تعویض

#شامل

#include "timelib_config.h"

مونتاژ و نصب بیشتر بدون مشکل انجام شد. تنها چیزی که باقی مانده بود اضافه کردن تنظیمات XCache به /etc/php.ini بود (بدون فکر زیاد، آنها را از مقاله ای که لینک بالا را ارائه کردم برداشتم، فقط در خط zend_extension مسیر را با مسیر خود جایگزین کردم: /usr/lib/php/modules/xcache.so).

بعد از آن با استفاده از دستور php -m عملکرد PHP را بررسی کردم و همه چیز درست شد!

سپس تنها راه اندازی مجدد آپاچی و لذت بردن از افکت باقی مانده بود. تلاش‌ها ارزشش را داشت: سایت‌ها سریع‌تر شروع به کار کردند (اما من فقط می‌توانم این را به صورت ذهنی ارزیابی کنم، اندازه‌گیری دقیقی انجام ندادم) و حافظه کمتری مصرف کردند. به طور خاص، TextCMS من به جای 320 کیلوبایت در هر صفحه شروع به مصرف تنها 120 کرد!

مثالی از تنظیم پارامترها:

;; نصب به عنوان پسوند zend (توصیه می شود)، معمولاً "$extension_dir/xcache.so"
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20060613/xcache.so


xcache.admin.enable_auth = روشن
xcache.admin.user = "mOo"
; xcache.admin.pass = md5 ($your_password)
xcache.admin.pass = ""


; تنظیمات فقط ini، تمام مقادیر در اینجا پیش فرض هستند مگر اینکه توضیح داده شود
; اجرای طرح SHM/Alocator سطح پایین را انتخاب کنید
xcache.shm_scheme = "mmap"
; برای غیرفعال کردن: xcache.size=0
; برای فعال کردن: xcache.size=64M و غیره (هر اندازه > 0) و mmap سیستم شما اجازه می دهد
xcache.size = 32M
; روی تعداد cpu تنظیم کنید (cat /proc/cpuinfo |پردازنده grep -c)
xcache.count = 1
; فقط یک نکته هش، شما همیشه می توانید تعداد (اقلام) > اسلات ها را ذخیره کنید
xcache.slots = 8K
; ttl مورد حافظه پنهان، 0 = برای همیشه
xcache.ttl = 0
; فاصله اسکن gc موارد منقضی شده، 0 = بدون اسکن، سایر مقادیر بر حسب ثانیه است
xcache.gc_interval = 0
; مانند موارد بالا اما برای کش متغیر
xcache.var_size = 0M
xcache.var_count = 1
xcache.var_slots = 8K
; پیش فرض ttl
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = خاموش
; N/A برای /dev/zero
xcache.readonly_protection = خاموش
; برای *nix، xcache.mmap_path یک مسیر فایل است، نه دایرکتوری.
; اگر می‌خواهید ReadonlyProtection را روشن کنید، از چیزی مانند "/tmp/xcache" استفاده کنید
; 2 گروه php /tmp/xcache یکسان را به اشتراک نمی‌گذارند
; برای win32، xcache.mmap_path=نام نقشه ناشناس، نه مسیر فایل
xcache.mmap_path = "/dev/zero"
; آن را خالی بگذارید (غیرفعال) یا "/tmp/phpcore/"
; مطمئن شوید که با php قابل نوشتن است (بدون بررسی open_basedir)
xcache.coredump_directory = ""
; تنظیمات در هر درخواست
xcache.cacher = روشن
xcache.stat = روشن
xcache.optimizer = خاموش


; تنظیمات در هر درخواست
; فعال کردن جمع‌آوری داده‌های پوشش برای توابع xcache.coveragedump_directory و xcache_coverager_start/stop/get/clean() (به عملکرد اجرا آسیب می‌زند)
xcache.coverager = خاموش
; تنظیمات فقط ini
; مطمئن شوید که قابل خواندن (care open_basedir) توسط اسکریپت نمایشگر پوشش است
; به xcache.coverager=روشن نیاز دارد
xcache.coveragedump_directory = ""

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

xCache- یک شتاب دهنده بسیار خوب به نظر من PHP که سرعت اجرای اسکریپت های PHP را چندین برابر افزایش می دهد.

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

بنابراین اجازه دهید شروع به نصب شتاب دهنده کد php در سرور - Xcache کنیم.

من روی سرور استفاده میکنم سیستم عاملاوبونتو 10.04، اما همچنین در موارد جدیدتر، به عنوان مثال Ubuntu LTS 12.04 14.04 که اخیراً منتشر شده است با پشتیبانی طولانی مدت، همه چیز یکسان به نظر می رسد. همه چیز در Debian 7 یکسان کار می کند.

نصب کنید:

Sudo apt-get install php5-xcache آخرین نسخه پایدار نصب خواهد شد، بنابراین نیازی به کامپایل نیست.

پس از نصب، فایل پیکربندی را در /etc/php5/conf.d/xcache.ini باز کنید.

برای من شبیه این است:

Xcache.size = 128M

xcache.count = 14

xcache.slots = 8K

xcache.ttl = 36000

xcache.gc_interval = 36000

xcache.var_size = 8M

xcache.var_count = 14

xcache.var_slots = 8K

xcache.var_ttl = 36000

xcache.var_maxttl = 604800

xcache.cacher = روشن

xcache.stat = روشن

پارامترهای اصلی:

xcache.size- مسئول مقدار حافظه برای ذخیره کش است. اگر مقدار خیلی کوچک باشد، اثر ذخیره سازی واقعاً کار نخواهد کرد.

xcache.count- تعداد بلوک هایی که کش به آنها تقسیم می شود. توصیه می شود با توجه به تعداد هسته های پردازنده تنظیم شود.

xcache.slots- تعداد اسلات های کش، هر چه تعداد اسلات ها بیشتر باشد، سرعت جستجو در حافظه نهان بیشتر می شود. اما مصرف حافظه نیز افزایش می یابد. توصیه می شود مقدار پیش فرض را بگذارید: 8K

xcache.ttl-طول عمر شی ذخیره شده در چند ثانیه. اگر به یک شی برای مدت زمان مشخصی دسترسی نداشته باشد، شی به عنوان در حال استفاده علامت گذاری می شود و متعاقباً توسط جمع کننده زباله از حافظه پنهان حذف می شود.

xcache.gc_interval- فاصله راه اندازی زباله جمع کن در ثانیه. مدت زمانی را مشخص می کند که پس از آن زباله جمع کن کار کند. پس از راه اندازی، به دنبال ورودی های منقضی شده (xcache.ttl) می گردد و آنها را از حافظه پنهان حذف می کند.

دو پارامتر آخر (xcache.ttl و xcache.gc_interval) در پیکربندی Xcache بسیار مهم هستند، اما در بسیاری از سایت ها مقادیر این پارامترها به ترتیب روی 0 تنظیم شده است، چیزی از حافظه پنهان حذف نمی شود و زمانی که کاملاً تمام شود. اسکریپت های کامل و جدید دیگر وارد آن نمی شوند. یعنی اگر یک سایت جدید را روی سرور میزبانی کنید، اسکریپت های آن دیگر به کش نمی رود، زیرا کاملاً با اسکریپت های سایت قبلی پر شده است.

پارامترهایی که با xcache.var_ شروع می‌شوند مسئول ذخیره‌سازی نتایج محاسبات هستند. و پارامترهای آنها مشابه است.

پس از ذخیره تنظیمات، باید وب سرور را مجددا راه اندازی کنید.

Sudo /etc/init.d/apache2 راه اندازی مجدد

مشاهده آمار Xcache

Xcache پنل مدیریت خود را دارد که به شما امکان می دهد وضعیت فعلی را مشاهده کرده و حافظه پنهان را پاک کنید تا بتواند کار کند، باید پوشه مدیریت را از /usr/local/share/examples/xcache/admin/ در فهرست سایت خود کپی کنید. (اوبونتو)

در دبیان 7 این دایرکتوری در مسیر /usr/share/xcache قرار دارد

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

Xcache.admin.enable_auth

xcache.admin.user= "user"

xcache.admin.pass= "رمز عبور"

رمز عبور باید به عنوان md5hash برای اطمینان بیشتر مشخص شود.

با این کار می توانید md5hash را دریافت کنید

php echo md5 ("رمز عبور"); ?> یا می توانید هش را به عنوان مثال در وب سایت دریافت کنید http://mainspy.ru/shifrovanie_md5

اسلات - تعداد اسلات های حافظه نهان، هر چه تعداد اسلات ها بیشتر باشد، سرعت جستجو در حافظه نهان بیشتر می شود. اما مصرف حافظه نیز افزایش می یابد. توصیه می شود مقدار پیش فرض را بگذارید: 8K

اندازه- اندازه حافظه برای Xcache.

فایده- چقدر حافظه باقی مانده است.

پاک کردن- کش را بازنشانی کنید.

بازدیدها- تعداد دسترسی به فایل انجام شده است

خانم ها- چند تماس با فایل ها انجام شد، اما این فایل ها در حافظه نبودند.

گرفتگی- فایل‌های موقتاً در حافظه پنهان مسدود شده‌اند.

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

ذخیره شده است- تعداد کل فایل های موجود در کش.

جدول پایین نشان می دهد که کدام فایل ها در حافظه نهان ذخیره می شوند و چقدر موثر هستند.

بازدیدها- تعداد تماس های این اسکریپت در حافظه. هر چه بیشتر، بهتر. اگر برای برخی از فایل ها این مقدار برای مدت طولانی کمتر از 10 باشد، این فایل به ندرت استفاده می شود و فقط فضایی در حافظه اشغال می کند.

اندازه- اندازه این فایل در حافظه. در اینجا جالب ترین قسمت است. به نظر می رسد که فایل کامپایل شده 10 برابر فضای بیشتری در حافظه نسبت به دیسک اشغال می کند. OMG!

SrcSize- اندازه فایل روی دیسک

دسترسی داشته باشید- چند وقت پیش به این فایل دسترسی پیدا شد

ایجاد کنید- مدت زمان این فایل در حافظه پنهان بوده است

X Cache PHP رایگان و منبع باز است. با XCache بیشتر خواهید داشت عملکرد بالااجرای یک اسکریپت PHP در VPS لینوکس. این می تواند با حذف زمان کامپایل کد PHP، کش کردن نسخه کامپایل شده کد PHP در حافظه و سپس استفاده از نسخه کامپایل شده کد به این مهم دست یابد. این می تواند به طور قابل توجهی زمان تولید صفحه را تا 5 برابر سریعتر افزایش دهد و همچنین بسیاری از جنبه های دیگر اسکریپت های PHP را بهینه و بهبود می بخشد و بار سرور را کاهش می دهد.

در این آموزش به شما نشان خواهیم داد که چگونه XCache را بر روی CentOS 7 VPS نصب کنید.

اول از همه، وارد سرور CentOS 7 VPS خود شوید و مطمئن شوید که تمام بسته های سرور شما به روز هستند.

به روز رسانی Yum -y

سپس بسته های زیر را نصب کنید

Yum install -y php-devel gcc make

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

سی دی /opt wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz

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

Tar -zxvf xcache-3.2.0.tar.gz

این یک دایرکتوری جدید "XCache-3.2.0" ایجاد می کند. به این دایرکتوری بروید

سی دی xcache-3.2.0

دستور phpize را اجرا کنید تا XCache به عنوان پسوند PHP آماده شود

پیکربندی Phpize برای: PHP نسخه Api: 20100412 Zend شماره Api ماژول: 20100525 Zend Extension شماره Api: 220100525

./configure --enable-xcache make make install

محل xcache.so در مرحله آخر نشان داده شده است

نصب پسوندهای مشترک: /usr/lib64/php/modules/

بنابراین مکان پسوند XCache مسیر زیر است:

/usr/lib64/php/modules/

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

Php -i |grep php.ini فایل پیکربندی (php.ini) مسیر => /etc بارگذاری فایل پیکربندی => /etc/php.ini

یک فایل پیکربندی برای XCache ایجاد کنید و خطوط زیر را اضافه کنید

پسوند نانو /etc/php.d/xcache.ini = /usr/lib64/php/modules/xcache.so xcache.shm_scheme = "mmap" xcache.size = 32M xcache.count = 1 xcache.slots = 8K xcache.ttl = 3600 xcache.gc_interval = 300 ; مانند موارد بالا اما برای کش متغیر. اگر مطمئن نیستید که به این نیاز دارید، احتمالاً xcache.var_size = 0M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 ; برای /dev/zero xcache.readonly_protection = خاموش xcache.mmap_path = "/dev/zero" xcache.cacher = در xcache.stat = روشن

می توانید تنظیمات موجود در فایل xcache.ini را متناسب با نیاز خود تغییر دهید.

برای اعمال تغییرات، وب سرور آپاچی را مجددا راه اندازی کنید

Systemctl httpd.service را مجددا راه اندازی کنید

در این مرحله، XCache باید با موفقیت روی سرور شما نصب شود. با اجرای دستور زیر می توانید این موضوع را بررسی کنید

# php -v PHP 5.4.16 (cli) (ساخته شده: 23 ژوئن 2015 21:17:27) حق نسخه برداری (ج) 1997-2013 The PHP Group Zend Engine نسخه 2.4.0، حق چاپ (c) 1998-2013 Zend Technologies با XC نسخه 3.2.0، حق چاپ (c) 2005-2014، توسط mOo با XCache Optimizer نسخه 3.2.0، حق چاپ (c) 2005-2014، توسط moo با XCache Cacher v3.2.0، حق چاپ (c) 2005-2014، توسط mOo با XC Coverager نسخه 3.2.0، حق چاپ (c) 2005-2014، توسط moOo

PS.اگر این پست را دوست داشتید، لطفا آن را با دوستان خود به اشتراک بگذارید شبکه های اجتماعیبا استفاده از دکمه های سمت چپ پست یا به سادگی نظر خود را در زیر بنویسید. پیشاپیش از شما متشکرم.

ذخیره بایت کد با استفاده از شتاب دهنده های PHP به طور قابل توجهی عملکرد و پاسخ سرور به درخواست های مشتری را افزایش می دهد. چندین شتاب دهنده محبوب PHP وجود دارد که از بین آنها انتخاب ما بر روی XCache قرار گرفت.

اکثر مردم می دانند که PHP بر اساس اصل مترجم ترجمه کار می کند، یعنی. اول اجرا شد تجزیهاسکریپت، سپس محتویات آن به بایت کد (http://ru.wikipedia.org/wiki/Bytecode) ترجمه می شود و تنها پس از آن تفسیر می شود و نتیجه تولید می شود.

شتاب دهنده های PHPپس از ایجاد، بایت کد برای مدت زمان معینی برای استفاده مجدد بعدی در صورتی که رمز اصلی دستخوش تغییرات نشده باشد، ذخیره می شود. بنابراین، PHP از 2 مرحله کار خلاص می شود: تجزیه اسکریپت و ترجمه آن به بایت کد - اگر بایت کد PHP کش وجود داشته باشد، تنها چیزی که باقی می ماند تفسیر آن و برگرداندن نتیجه است. و این واقعیت که بایت کد در حافظه RAM ذخیره می شود، عملکرد نسبتاً قابل توجهی را افزایش می دهد.

چندین شتاب دهنده محبوب دیگر برای PHP، APC ( آخرین نسخه بتا: 3.1.13 (2012-09-03)) و e Accelerator ( آخرین نسخه پایدار: 0.9.6.1 (2010-05-31)) که به طور بالقوه مرده در نظر گرفته می شوند و بنابراین استفاده از آنها به شدت ممنوع است. به عنوان مثال، برای eAccelerator، اگرچه پشتیبانی از PHP 5.4 اعلام شد، اشکالات مکرری در هنگام استفاده از آن مشاهده شد و به نظر می‌رسد در خطای HTTP 500 در برخی از صفحات وب که پس از غیرفعال کردن eAccelerator کاملاً کار می‌کردند، بیان شد.

امروزه XCache ایده آل ترین نامزدی است که از تمام نسخه های PHP از جمله PHP 5.6 پشتیبانی می کند.

فهرست شتاب دهنده های PHP - ویکی پدیا، دانشنامه آزاد: http://en.wikipedia.org/wiki/List_of_PHP_accelerators

نصب و پیکربندی اولیه XCache در لینوکس

می توانید XCache را روی لینوکس از بسته های زیر نصب کنید:

$ yum نصب php-xcache xcache-admin $ apt-get نصب php5-xcache

xcache.ttl و xcache.var_maxttl پیش فرض = 0، یعنی. طول عمر کش نامحدود است، که به نظر ما خوب نیست، IMHO ممکن است اسکریپت ها از قبل حذف شده باشند، و کش مسدود می شود و RAM بسیار مورد نیاز را اشغال می کند. بنابراین، ما طول عمر حافظه پنهان را 24 ساعت (86400 ثانیه) با فاصله جمع آوری زباله "*gc_interval" 3600 ثانیه تنظیم می کنیم. (یک ساعت):

$ vi / etc/ php.d/ xcache.ini [ xcache-common] پسوند = xcache.so [ xcache.admin] xcache.admin.enable_auth = خاموش xcache.admin.user = "admin" xcache.admin.pass = [ xcache] xcache.shm_scheme = "mmap" xcache.size = 60M xcache.count = 1 xcache.slots = 8K xcache.ttl = 86400 xcache.gc_interval = 3600 xcache.var_size = 4M xcache.var_8. .var_ttl = 0 xcache.var_maxttl = 86400 xcache.var_gc_interval = 3600 xcache.var_namespace_mode = 0 xcache.var_namespace = "" xcache.readonly_protection = Off xcache.mmap_core xcache.du _نوع = 0 xcache.disable_on_crash = خاموش xcache.experimental = خاموش xcache.cacher = روشن xcache.stat = روشن xcache.optimizer = خاموش [ xcache.coverager] xcache.coverager = خاموش xcache.coverager_autostart = روشن xcache.coveragedump_directory $ راه اندازی مجدد

می توانید بررسی کنید که آیا XCache با استفاده از یک اسکریپت php با موفقیت نصب شده است، نتایج آن باید حاوی خطوطی با پارامترهای پیکربندی XCache باشد:

جزئیات مربوط به تنظیمات پیکربندی در اینجا: http://xcache.lighttpd.net/wiki/XcacheIni#INIsettingsforXCache

نصب پنل مدیریت XCache

پنل مدیریت XCacheدر مرحله اولیه مفید است، زمانی که پی بردن به کارایی استفاده از کش و اینکه آیا RAM کافی برای آن اختصاص داده شده است یا خیر ( RAM) و پس از آن پنل مدیریت را می توان برای چندین سال حذف کرد.

پنل مدیریت XCache مجموعه ای ساده از اسکریپت های PHP است، و اگر بسته xcache-admin نصب شده باشد، همان اسکریپت های پنل مدیریت PHP در /usr/share/xcache در دسترس خواهند بود، که می توانند در فهرست وب ما کپی شوند. نیاز دارید (cp - r /usr/share/xcache /var/www/html/)، یا بهتر است فقط یک نام مستعار برای میزبان مجازی مورد نیاز خود ایجاد کنیم:

< virtualhost ...>... مستعار /xcacheadmin "/usr/share/xcache/"< Directory "/usr/share/xcache/" >گزینه‌ها نمایه‌ها چندنما FollowSymLinks AllowOverride همه سفارش مجاز، رد کردن اجازه از همه

حالا بیایید یک هش رمز عبور MD5 ایجاد کنیم و xcache.ini خود را ویرایش کنیم ( یا php.ini) b و سرور را مجددا راه اندازی کنید:

$ echo -n "secreatpassword" | md5sum - $ vi / etc/ php.d/ xcache.ini [ xcache.admin] xcache.admin.enable_auth = در xcache.admin.user = "admin" xcache.admin.pass ="3cb1cc80547422c9ef667953f00e9a17"

$ /etc/init.d/httpd راه اندازی مجدد

بر اساس برخی گزارش ها (#339 (xache3.1.0 تکرار پنجره پاپ آپ نیاز به احراز هویت دارد) - XCache)، مشکل به این دلیل است که HTTP_AUTHORIZATION به پشتیبان نمی رسد. به نظر می‌رسد htaccess. به شخصی با خط «SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0» کمک می‌کند، اما تصمیم گرفته شد که همه این مشکلات را «فراموش» کرده و «xcache.admin.enable_auth = Off» این مجوز نامعتبر XCache را کاملاً غیرفعال کرده و مستقیماً از آن استفاده کنید. از همان htaccess:

AuthUserFile "/path/to/.htpasswd" AuthName "Administrator only" AuthType Basic نیاز به معتبر دارد- کاربر ارضای همه #سفارش اجازه، رد #مجاز از xxx. xxx xxx xxx

توجه! این بدان معنی است که آمار پنل مدیریت، مانند خود کش بایت، جهانی نیست، بلکه منحصراً برای هر میزبان مجازی (دامنه) جداگانه اعمال می شود.

اگر پنل مدیریت از بسته‌ها در دسترس نباشد، می‌توان آن را از آرشیو کد منبع (دایرکتوری httpd) "خارج" کرد، برای جزئیات بیشتر پیوندها را دنبال کنید:

  • InstallAdministration - XCache
    • http://xcache.lighttpd.net/wiki/InstallAdministration
    • http://xcache.lighttpd.net/wiki/GettingSource

XCache هر 10 دقیقه یک حافظه پنهان را حذف می کند

اگر در طول عمر حافظه نهان xcache.ttl، تعداد بازدیدها در آمار استفاده از بایت کد ذخیره شده افزایش نیابد، و اندازه RAM موجود (رایگان، Avail) کاهش نیابد، یا این نشانگرها به طور منظم (هر 5-10 عدد) باشند. دقیقه) تنظیم مجدد به صفر، این بدان معنی است که باید با تنظیمات کاری انجام شود.

حافظه نهان XCache پس از هر بار راه اندازی مجدد سرور (بارگذاری مجدد، برازنده یا راه اندازی مجدد) بازنشانی می شود. برخی از افراد، به جای تنظیم دقیق و پیکربندی محتاطانه سرور، به سادگی تنظیمات پیش فرض را رها می کنند و با دستور apachectl graceful که از cron اجرا می شود، با نشت حافظه معمولی و خرابی سرور مبارزه می کنند. بنابراین، ابتدا باید وظایف cron را برای دستوراتی که وب سرور را راه اندازی مجدد می کنند بررسی کنید.

اگر هیچ چیز مشکوکی در تاج وجود ندارد، باید پیکربندی سرور را بررسی کنید، به خصوص اگر اسکریپت ها روی آن با نام FastCGI اجرا شوند:

$ vi / etc/ httpd/ conf.d/ fcgid.conf # FcgidProcessLifeTime 3600 FcgidProcessLifeTime 0 # پیش‌فرض: FcgidIdleTimeout 300 FcgidIdleTimeout 86400 # پیش‌فرض: FcgidMaxRequestsPerProcess 0 #باید<= PHP_FCGI_MAX_REQUESTS FcgidMaxRequestsPerProcess 0 ... DefaultInitEnv PHP_FCGI_CHILDREN 1

مورد بالا یک پیکربندی کاری است که در آن طول عمر و حداکثر تعداد درخواست‌ها برای فرآیندهای Fcgid بررسی نمی‌شود (یعنی = 0)، به استثنای بررسی فرآیندهای انتظار، یعنی اگر فرآیند در انتظار درخواست، درخواستی را در FcgidIdleTimeout دریافت نکند ( 24 ساعت)، سپس کشته می شود و XCache بر این اساس ریست می شود.

مشکل شستشوی منظم کش زمانی که برخی از کاربران تصمیم گرفتند جلسات را با استفاده از XCache ذخیره کنند ظاهر شد، و از آنجایی که فرآیندهای Fcgid با تنظیمات پیش‌فرض به طور منظم همراه با حافظه نهان XCache حذف می‌شدند، کاربران دوباره مجبور شدند بارها و بارها احراز هویت کنند.

فهرست از. نسخه های XCache: http://xcache.lighttpd.net/wiki/ReleaseArchive

AdMin BagoSeeker یک مبارز سرسخت برای عملکرد بدون اشکال هر مکانیسم و ​​ارگانیسم در سراسر جهان است و بنابراین در جستجوی ابدی برای انواع اشکالات است و کسانی که جستجو می کنند، همانطور که می دانیم، همیشه پیدا می کنند. وقتی چیزی یا کسی قابل درمان نباشد، با این جمله که «من در جهنم هستم و شما همگی شیاطین هستید»، او به مشروب خواری می رود و از آنجا دوباره شروع به درمان غیرقابل درمان می کند.

بازگشت

×
به انجمن "page-electric.ru" بپیوندید!
VKontakte:
من قبلاً در انجمن "page-electric.ru" مشترک هستم