توضیحاتی راجب OpCache

Y.P.Y

Well-Known Member
توضیحاتی درباره اکستنشن OpCache:

اگر تنظیم opcache.validate_timestamps فعال و به تنظیم opcache.revalidate_freq هم مقدار داده بشه، درصورت تغییر فایلهای PHP تون، سیستم OpCache اونهارو تازه (invalidate) قلمداد میکنه و کش قدیمی مربوط به اون فایلهای تغییر یافته رو در قسمت shared memory حافظه(shm)، کهنه علامت گذاری میکنه.

!!! اما متاسفانه سیستم OpCache کشهای کهنه(invalid) رو از حافظه shared memory تخلیه نمیکنه و فقط اونهارو wasted(تلف شده) علامت گذاری میکنه! و تنها زمانی که سیستم OpCache ریستارت بشه به میزان تنظیم opcache.memory_consumption حافظه shared memory تخلیه میشه، اون هم به 3 شرط: تجاوز از مقدار opcache.max_accelerated_files || مقدار opcache.memory_consumption && رسیدن به مقدار opcache.max_wasted_percentage. (به|| && دقت کنید)

هنگامی که کش wasted در حافظه به بیش از حد مجاز(opcache.max_wasted_percentage) برسه، OpCache خودکار ریستارت میشه، حافظه shared memory قفل میشه، segment کامل تخلیه میشه و نهایتاً قفل باز میشه. در این حالت وب سرور بکمک پروسس PHP بشدت مشغول تولید OpCode و cache کردن میشه تا حدی که پرفورمنس سرور افت میکنه یا حتی لحظاتی از دسترس خارج میشه و گاهاً cache slam رو بوجود میاره.

*** بنابراین باید طوری OpCache رو تنظیم کنید و فایلهای PHP رو تغییر بدید که هرگز ظرفیت shared memory تون پر نشه... (مثلاً هنگام آپدیت کدها وب سرور رو خاموش کنید، از تابع opcache_reset() استفاده کنید یا کدهارو باهم و یکجا آپدیت کنید و...)

نکته: عمل allocation فضای کش در shared memory هنگامی انجام میشه که موتور PHP شروع به کار میکنه، پس اکستنشن OpCache سریعاً به میزان تنظیم opcache.memory_consumption فضایی رو در قسمت shared memory سیستم عامل رزرو میکنه(به مگابایت).
نکته 2: اکستنشن OpCache بهتره برای سرور واقعی(محیط production) استفاده بشه و نه محیط برنامه نویسی/development.
نکته 3: در حال حاضر کاملترین و قوی ترین سیستم cache اکستنشن opcache هستش که هم optimization و هم caching رو فراهم میکنه.
توجه: اگر از وبسرور IIS استفاده می کنید بهتره از اکستنشن WinCache استفاده کنید و نه OpCache.

opcache-shared-memory.png
 

جدیدترین ارسال ها

بالا